@easynet/agent-memory 0.0.2 → 1.0.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 (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 +22 -0
  35. package/dist/src/index.d.ts.map +1 -0
  36. package/dist/src/index.js +51 -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
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ /**
3
+ * Ingest from a single URL: local path (PDF/txt/HTML/image) or remote URL.
4
+ * Format/media detection is for ingest pipeline only—not use-case routing; routing is config-driven.
5
+ * PDF requires pdf-parse; images may use captionFn for caption.
6
+ * Chunking is paragraph-based (semantic); we never store image binaries—only caption + URL.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ingestUrlToMemory = ingestUrlToMemory;
10
+ const node_path_1 = require("node:path");
11
+ function isRemote(url) {
12
+ return /^https?:\/\//i.test(url);
13
+ }
14
+ function isFileProtocol(url) {
15
+ return url.toLowerCase().startsWith("file://");
16
+ }
17
+ function getContentTypeFromPath(path) {
18
+ const ext = path.replace(/\?.*$/, "").split(".").pop()?.toLowerCase() ?? "";
19
+ const map = {
20
+ pdf: "application/pdf",
21
+ txt: "text/plain",
22
+ html: "text/html",
23
+ htm: "text/html",
24
+ xhtml: "text/html",
25
+ png: "image/png",
26
+ jpg: "image/jpeg",
27
+ jpeg: "image/jpeg",
28
+ gif: "image/gif",
29
+ webp: "image/webp",
30
+ };
31
+ return map[ext] ?? "application/octet-stream";
32
+ }
33
+ async function getResource(url) {
34
+ if (isRemote(url)) {
35
+ const res = await fetch(url);
36
+ if (!res.ok)
37
+ throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
38
+ const contentType = res.headers.get("content-type")?.split(";")[0].trim() ?? "";
39
+ const ab = await res.arrayBuffer();
40
+ return { buffer: Buffer.from(ab), contentType };
41
+ }
42
+ const { readFile } = await import("node:fs/promises");
43
+ const path = isFileProtocol(url) ? decodeURIComponent(url.slice(7)) : url;
44
+ const buffer = await readFile(path);
45
+ const contentType = getContentTypeFromPath(path);
46
+ return { buffer, contentType };
47
+ }
48
+ /**
49
+ * Semantic chunking: paragraph-based so chunks respect meaning.
50
+ * Splits on double newline; long paragraphs are split by chunkSize.
51
+ */
52
+ function chunkText(text, chunkSize) {
53
+ const trimmed = text.trim();
54
+ if (!trimmed)
55
+ return [];
56
+ const chunks = [];
57
+ const paragraphs = trimmed.split(/\n\n+/);
58
+ let current = "";
59
+ for (const p of paragraphs) {
60
+ if (current.length + p.length + 2 <= chunkSize) {
61
+ current = current ? `${current}\n\n${p}` : p;
62
+ }
63
+ else {
64
+ if (current)
65
+ chunks.push(current);
66
+ if (p.length <= chunkSize) {
67
+ current = p;
68
+ }
69
+ else {
70
+ for (let i = 0; i < p.length; i += chunkSize) {
71
+ chunks.push(p.slice(i, i + chunkSize));
72
+ }
73
+ current = "";
74
+ }
75
+ }
76
+ }
77
+ if (current)
78
+ chunks.push(current);
79
+ return chunks;
80
+ }
81
+ function resolveImageUrl(src, baseUrl) {
82
+ if (!src?.trim())
83
+ return null;
84
+ const s = src.trim();
85
+ if (/^https?:\/\//i.test(s))
86
+ return s;
87
+ try {
88
+ return new URL(s, baseUrl).href;
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ /** Extract main body content and image URLs from HTML. Uses cheerio when available; else stripHtml + no images. */
95
+ async function extractMainContent(html, pageUrl) {
96
+ try {
97
+ const cheerio = await import("cheerio");
98
+ const $ = cheerio.load(html);
99
+ $("script, style, nav, footer, header, aside, iframe").remove();
100
+ const main = $("article").length > 0
101
+ ? $("article").first()
102
+ : $("main").length > 0
103
+ ? $("main").first()
104
+ : $("body");
105
+ const textSource = main.length > 0 ? main : $("body");
106
+ const text = textSource.text().replace(/\s+/g, " ").trim();
107
+ const imageUrls = [];
108
+ const imgContainer = main.length > 0 ? main : $("body");
109
+ if (imgContainer.length > 0) {
110
+ imgContainer.find("img").each((_, el) => {
111
+ const resolved = resolveImageUrl($(el).attr("src") ?? undefined, pageUrl);
112
+ if (resolved && !imageUrls.includes(resolved))
113
+ imageUrls.push(resolved);
114
+ });
115
+ }
116
+ else {
117
+ $("img").each((_, el) => {
118
+ const resolved = resolveImageUrl($(el).attr("src") ?? undefined, pageUrl);
119
+ if (resolved && !imageUrls.includes(resolved))
120
+ imageUrls.push(resolved);
121
+ });
122
+ }
123
+ return { text, imageUrls };
124
+ }
125
+ catch {
126
+ return { text: stripHtml(html), imageUrls: [] };
127
+ }
128
+ }
129
+ function stripHtml(html) {
130
+ const noScript = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, " ");
131
+ const noStyle = noScript.replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, " ");
132
+ const noTags = noStyle.replace(/<[^>]+>/g, " ");
133
+ const decoded = noTags
134
+ .replace(/&nbsp;/gi, " ")
135
+ .replace(/&amp;/gi, "&")
136
+ .replace(/&lt;/gi, "<")
137
+ .replace(/&gt;/gi, ">")
138
+ .replace(/&quot;/gi, '"');
139
+ return decoded.replace(/\s+/g, " ").trim();
140
+ }
141
+ function isPdf(contentType, url) {
142
+ if (contentType.includes("application/pdf"))
143
+ return true;
144
+ if (/\.pdf(\?|$)/i.test(url))
145
+ return true;
146
+ return false;
147
+ }
148
+ function isHtml(contentType, url) {
149
+ if (contentType.includes("text/html"))
150
+ return true;
151
+ if (/\.(html?|xhtml)(\?|$)/i.test(url))
152
+ return true;
153
+ return false;
154
+ }
155
+ function isImage(contentType, url) {
156
+ if (contentType.startsWith("image/"))
157
+ return true;
158
+ if (/\.(png|jpe?g|gif|webp)(\?|$)/i.test(url))
159
+ return true;
160
+ return false;
161
+ }
162
+ /** Detect image by magic bytes so uploads without extension (e.g. multer temp files) are still treated as images. */
163
+ function isImageBuffer(buffer) {
164
+ if (buffer.length < 12)
165
+ return false;
166
+ // PNG: 89 50 4E 47 0D 0A 1A 0A
167
+ if (buffer[0] === 0x89 && buffer[1] === 0x50 && buffer[2] === 0x4e && buffer[3] === 0x47)
168
+ return true;
169
+ // JPEG: FF D8 FF
170
+ if (buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff)
171
+ return true;
172
+ // GIF: GIF87a or GIF89a
173
+ if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46)
174
+ return true;
175
+ // WebP: RIFF....WEBP
176
+ if (buffer[0] === 0x52 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x46 && buffer.length >= 12 &&
177
+ buffer[8] === 0x57 && buffer[9] === 0x45 && buffer[10] === 0x42 && buffer[11] === 0x50)
178
+ return true;
179
+ return false;
180
+ }
181
+ async function extractTextFromPdf(buffer) {
182
+ try {
183
+ const pdfParse = (await import("pdf-parse")).default;
184
+ const data = await pdfParse(buffer);
185
+ return typeof data?.text === "string" ? data.text : "";
186
+ }
187
+ catch (e) {
188
+ const err = e;
189
+ if (err?.code === "ERR_MODULE_NOT_FOUND" || err?.message?.includes("pdf-parse")) {
190
+ throw new Error("PDF support requires pdf-parse: pnpm add pdf-parse");
191
+ }
192
+ throw e;
193
+ }
194
+ }
195
+ /**
196
+ * Ingest from local path or remote URL; detect PDF/txt/HTML/image by format, then write as knowledge.
197
+ */
198
+ async function ingestUrlToMemory(memory, options) {
199
+ const { url, namespace, type = "knowledge", chunkSize = 800, metadata = {}, captionFn, } = options;
200
+ const { buffer, contentType } = await getResource(url);
201
+ const ct = contentType.toLowerCase();
202
+ const detectedAsImage = isImage(ct, url) || isImageBuffer(buffer);
203
+ let firstItem;
204
+ let totalCount = 0;
205
+ if (isPdf(ct, url)) {
206
+ const text = await extractTextFromPdf(buffer);
207
+ const chunks = chunkText(text, chunkSize);
208
+ for (const content of chunks) {
209
+ if (!content.trim())
210
+ continue;
211
+ const item = await memory.memorize({
212
+ namespace,
213
+ type,
214
+ content,
215
+ metadata: { ...metadata, source: "doc" },
216
+ });
217
+ if (!firstItem)
218
+ firstItem = item;
219
+ totalCount += 1;
220
+ }
221
+ return { count: totalCount, firstItem };
222
+ }
223
+ if (detectedAsImage) {
224
+ const text = captionFn ? await captionFn(buffer) : `(image: ${url})`;
225
+ const item = await memory.memorize({
226
+ namespace,
227
+ type,
228
+ content: text,
229
+ metadata: { ...metadata, source: "doc" },
230
+ });
231
+ if (!firstItem)
232
+ firstItem = item;
233
+ return { count: 1, firstItem };
234
+ }
235
+ if (isHtml(ct, url)) {
236
+ const html = buffer.toString("utf-8");
237
+ const pageBase = isRemote(url)
238
+ ? url
239
+ : url.toLowerCase().startsWith("file://")
240
+ ? url
241
+ : "file://" + (0, node_path_1.resolve)(url).replace(/\\/g, "/");
242
+ const { text: mainText, imageUrls } = await extractMainContent(html, pageBase);
243
+ for (const imageUrl of imageUrls) {
244
+ let content;
245
+ if (captionFn) {
246
+ try {
247
+ const { buffer: imgBuffer } = await getResource(imageUrl);
248
+ const caption = await captionFn(imgBuffer);
249
+ content = `[image: ${imageUrl}]: ${caption}`;
250
+ }
251
+ catch {
252
+ content = `[image: ${imageUrl}]`;
253
+ }
254
+ }
255
+ else {
256
+ content = `[image: ${imageUrl}]`;
257
+ }
258
+ const item = await memory.memorize({
259
+ namespace,
260
+ type,
261
+ content,
262
+ metadata: { ...metadata, source: "doc" },
263
+ });
264
+ if (!firstItem)
265
+ firstItem = item;
266
+ totalCount += 1;
267
+ }
268
+ const chunks = chunkText(mainText, chunkSize);
269
+ for (const content of chunks) {
270
+ if (!content.trim())
271
+ continue;
272
+ const item = await memory.memorize({
273
+ namespace,
274
+ type,
275
+ content,
276
+ metadata: { ...metadata, source: "doc" },
277
+ });
278
+ if (!firstItem)
279
+ firstItem = item;
280
+ totalCount += 1;
281
+ }
282
+ return { count: totalCount, firstItem };
283
+ }
284
+ const text = buffer.toString("utf-8");
285
+ const chunks = chunkText(text, chunkSize);
286
+ for (const content of chunks) {
287
+ if (!content.trim())
288
+ continue;
289
+ const item = await memory.memorize({
290
+ namespace,
291
+ type,
292
+ content,
293
+ metadata: { ...metadata, source: "doc" },
294
+ });
295
+ if (!firstItem)
296
+ firstItem = item;
297
+ totalCount += 1;
298
+ }
299
+ return { count: totalCount, firstItem };
300
+ }
301
+ //# sourceMappingURL=url-ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-ingest.js","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * LangGraph BaseStore adapter backed by AgentMemory.
3
+ * Use with DeepAgents StoreBackend so that /memories/* is persisted via agent-memory.
4
+ * Compatible with DeepAgents 1.6.1 and @langchain/langgraph-checkpoint.
5
+ */
6
+ import type { AgentMemory } from "../core/agent-memory.js";
7
+ import type { CreateAgentMemoryResult } from "../create-agent-memory.js";
8
+ import { BaseStore, type GetOperation, type Item, type ListNamespacesOperation, type PutOperation, type SearchItem, type SearchOperation } from "@langchain/langgraph-checkpoint";
9
+ export interface AgentMemoryStoreAdapterOptions {
10
+ /** AgentMemory instance or createAgentMemory() result */
11
+ agentMemory: AgentMemory | CreateAgentMemoryResult;
12
+ }
13
+ /**
14
+ * BaseStore implementation that delegates to AgentMemory.
15
+ * Store keys are file paths (e.g. "/memories/user_preferences.txt"); value is { content, created_at?, modified_at? }.
16
+ */
17
+ export declare class AgentMemoryStoreAdapter extends BaseStore {
18
+ private agentMemory;
19
+ constructor(options: AgentMemoryStoreAdapterOptions);
20
+ private putOne;
21
+ private getOne;
22
+ batch<Op extends (GetOperation | PutOperation | SearchOperation | ListNamespacesOperation)[]>(operations: Op): Promise<{
23
+ [K in keyof Op]: Op[K] extends PutOperation ? void : Op[K] extends SearchOperation ? SearchItem[] : Op[K] extends GetOperation ? Item | null : Op[K] extends ListNamespacesOperation ? string[][] : never;
24
+ }>;
25
+ get(namespace: string[], key: string): Promise<Item | null>;
26
+ search(namespacePrefix: string[], options?: {
27
+ filter?: Record<string, unknown>;
28
+ limit?: number;
29
+ offset?: number;
30
+ query?: string;
31
+ }): Promise<SearchItem[]>;
32
+ put(namespace: string[], key: string, value: Record<string, unknown>, _index?: false | string[]): Promise<void>;
33
+ delete(namespace: string[], key: string): Promise<void>;
34
+ listNamespaces(options?: {
35
+ prefix?: string[];
36
+ suffix?: string[];
37
+ maxDepth?: number;
38
+ limit?: number;
39
+ offset?: number;
40
+ }): Promise<string[][]>;
41
+ }
42
+ //# sourceMappingURL=deepagents-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepagents-adapter.d.ts","sourceRoot":"","sources":["../../../src/integrations/deepagents-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EACL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,iCAAiC,CAAC;AAczC,MAAM,WAAW,8BAA8B;IAC7C,yDAAyD;IACzD,WAAW,EAAE,WAAW,GAAG,uBAAuB,CAAC;CACpD;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,SAAS;IACpD,OAAO,CAAC,WAAW,CAAwC;gBAE/C,OAAO,EAAE,8BAA8B;YAKrC,MAAM;YAgBN,MAAM;IAuBd,KAAK,CAAC,EAAE,SAAS,CAAC,YAAY,GAAG,YAAY,GAAG,eAAe,GAAG,uBAAuB,CAAC,EAAE,EAChG,UAAU,EAAE,EAAE,GACb,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,eAAe,GAAG,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,uBAAuB,GAAG,MAAM,EAAE,EAAE,GAAG,KAAK;KAAE,CAAC;IAwCnN,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAI3D,MAAM,CACV,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9F,OAAO,CAAC,UAAU,EAAE,CAAC;IAsBlB,GAAG,CACP,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,cAAc,CAAC,OAAO,CAAC,EAAE;QAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAGxB"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ /**
3
+ * LangGraph BaseStore adapter backed by AgentMemory.
4
+ * Use with DeepAgents StoreBackend so that /memories/* is persisted via agent-memory.
5
+ * Compatible with DeepAgents 1.6.1 and @langchain/langgraph-checkpoint.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AgentMemoryStoreAdapter = void 0;
9
+ const langgraph_checkpoint_1 = require("@langchain/langgraph-checkpoint");
10
+ function toStoreNamespace(arr) {
11
+ return "memory:" + (arr.length > 0 ? arr.join(":") : "default");
12
+ }
13
+ function fromStoreNamespace(s) {
14
+ if (s.startsWith("memory:")) {
15
+ const rest = s.slice("memory:".length);
16
+ return rest ? rest.split(":") : [];
17
+ }
18
+ return [];
19
+ }
20
+ /**
21
+ * BaseStore implementation that delegates to AgentMemory.
22
+ * Store keys are file paths (e.g. "/memories/user_preferences.txt"); value is { content, created_at?, modified_at? }.
23
+ */
24
+ class AgentMemoryStoreAdapter extends langgraph_checkpoint_1.BaseStore {
25
+ agentMemory;
26
+ constructor(options) {
27
+ super();
28
+ this.agentMemory = options.agentMemory;
29
+ }
30
+ async putOne(namespace, key, value) {
31
+ const ns = toStoreNamespace(namespace);
32
+ await this.agentMemory.deleteByKey(ns, key);
33
+ const content = typeof value.content === "string" ? value.content : JSON.stringify(value);
34
+ await this.agentMemory.memorize({
35
+ namespace: ns,
36
+ type: "cross_thread",
37
+ content,
38
+ metadata: {
39
+ path: key,
40
+ created_at: value.created_at ?? new Date().toISOString(),
41
+ updated_at: value.modified_at ?? value.updated_at ?? new Date().toISOString(),
42
+ },
43
+ });
44
+ }
45
+ async getOne(namespace, key) {
46
+ const ns = toStoreNamespace(namespace);
47
+ const item = await this.agentMemory.getByKey(ns, key);
48
+ if (!item)
49
+ return null;
50
+ const created = item.metadata?.created_at
51
+ ? new Date(item.metadata.created_at)
52
+ : new Date();
53
+ const updated = item.metadata?.updated_at
54
+ ? new Date(item.metadata.updated_at)
55
+ : created;
56
+ return {
57
+ key: item.metadata?.path ?? key,
58
+ namespace: fromStoreNamespace(item.namespace),
59
+ value: {
60
+ content: item.content,
61
+ created_at: created.toISOString(),
62
+ modified_at: updated.toISOString(),
63
+ },
64
+ createdAt: created,
65
+ updatedAt: updated,
66
+ };
67
+ }
68
+ async batch(operations) {
69
+ const results = [];
70
+ for (const op of operations) {
71
+ if ("key" in op && "namespace" in op && "value" in op) {
72
+ const putOp = op;
73
+ if (putOp.value != null) {
74
+ await this.putOne(putOp.namespace, putOp.key, putOp.value);
75
+ }
76
+ else {
77
+ await this.delete(putOp.namespace, putOp.key);
78
+ }
79
+ results.push(undefined);
80
+ }
81
+ else if ("namespace" in op && "key" in op && !("value" in op)) {
82
+ const getOp = op;
83
+ const item = await this.getOne(getOp.namespace, getOp.key);
84
+ results.push(item);
85
+ }
86
+ else if ("namespacePrefix" in op) {
87
+ const searchOp = op;
88
+ const items = await this.search(searchOp.namespacePrefix, {
89
+ filter: searchOp.filter,
90
+ limit: searchOp.limit ?? 10,
91
+ offset: searchOp.offset ?? 0,
92
+ query: searchOp.query,
93
+ });
94
+ results.push(items);
95
+ }
96
+ else if ("limit" in op && "offset" in op) {
97
+ const listOp = op;
98
+ const namespaces = await this.listNamespaces({
99
+ limit: listOp.limit,
100
+ offset: listOp.offset,
101
+ maxDepth: listOp.maxDepth,
102
+ prefix: listOp.matchConditions?.find((m) => m.matchType === "prefix")?.path,
103
+ });
104
+ results.push(namespaces);
105
+ }
106
+ else {
107
+ results.push(undefined);
108
+ }
109
+ }
110
+ return results;
111
+ }
112
+ async get(namespace, key) {
113
+ return this.getOne(namespace, key);
114
+ }
115
+ async search(namespacePrefix, options) {
116
+ const ns = toStoreNamespace(namespacePrefix);
117
+ const req = {
118
+ namespace: ns,
119
+ query: options?.query ?? "",
120
+ topK: options?.limit ?? 10,
121
+ filters: options?.filter,
122
+ };
123
+ const { items } = await this.agentMemory.recall(req);
124
+ const created = (m) => m.metadata?.created_at ? new Date(m.metadata.created_at) : new Date();
125
+ const updated = (m) => m.metadata?.updated_at ? new Date(m.metadata.updated_at) : created(m);
126
+ return items.map((item) => ({
127
+ key: item.metadata?.path ?? item.id,
128
+ namespace: fromStoreNamespace(item.namespace),
129
+ value: { content: item.content, created_at: created(item).toISOString(), modified_at: updated(item).toISOString() },
130
+ createdAt: created(item),
131
+ updatedAt: updated(item),
132
+ }));
133
+ }
134
+ async put(namespace, key, value, _index) {
135
+ await this.putOne(namespace, key, value);
136
+ }
137
+ async delete(namespace, key) {
138
+ const ns = toStoreNamespace(namespace);
139
+ await this.agentMemory.deleteByKey(ns, key);
140
+ }
141
+ async listNamespaces(options) {
142
+ return [["filesystem"]];
143
+ }
144
+ }
145
+ exports.AgentMemoryStoreAdapter = AgentMemoryStoreAdapter;
146
+ //# sourceMappingURL=deepagents-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepagents-adapter.js","sourceRoot":"","sources":["../../../src/integrations/deepagents-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * LangChain helpers: inject retrieved memory before LLM, write memory after turn/tool.
3
+ * Generic: no use-case logic; namespace/query/type from caller.
4
+ */
5
+ import type { AgentMemory } from "../core/agent-memory.js";
6
+ import type { CreateAgentMemoryResult } from "../create-agent-memory.js";
7
+ import type { MemoryWriteRequest } from "../core/types.js";
8
+ /** Any memory instance that has recall and memorize (AgentMemory or createAgentMemory() result). */
9
+ export type LangChainMemoryLike = AgentMemory | CreateAgentMemoryResult;
10
+ export interface RetrieveForLangChainOptions {
11
+ namespace: string;
12
+ query: string;
13
+ topK?: number;
14
+ budgetTokens?: number;
15
+ }
16
+ /**
17
+ * Call before invoking the LLM: retrieve memory and return text to inject into system or context.
18
+ */
19
+ export declare function retrieveContextForLangChain(agentMemory: LangChainMemoryLike, options: RetrieveForLangChainOptions): Promise<{
20
+ injectedText: string;
21
+ traceId: string;
22
+ }>;
23
+ /**
24
+ * Call after a turn or tool result: write a memory entry (e.g. cross_thread).
25
+ */
26
+ export declare function writeMemoryForLangChain(agentMemory: LangChainMemoryLike, req: MemoryWriteRequest): Promise<void>;
27
+ //# sourceMappingURL=langchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../../src/integrations/langchain.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,oGAAoG;AACpG,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,uBAAuB,CAAC;AAExE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,mBAAmB,EAChC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CASpD;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,mBAAmB,EAChC,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * LangChain helpers: inject retrieved memory before LLM, write memory after turn/tool.
4
+ * Generic: no use-case logic; namespace/query/type from caller.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.retrieveContextForLangChain = retrieveContextForLangChain;
8
+ exports.writeMemoryForLangChain = writeMemoryForLangChain;
9
+ /**
10
+ * Call before invoking the LLM: retrieve memory and return text to inject into system or context.
11
+ */
12
+ async function retrieveContextForLangChain(agentMemory, options) {
13
+ const req = {
14
+ namespace: options.namespace,
15
+ query: options.query,
16
+ topK: options.topK ?? 8,
17
+ budgetTokens: options.budgetTokens ?? 1200,
18
+ };
19
+ const result = await agentMemory.recall(req);
20
+ return { injectedText: result.injectedText, traceId: result.traceId };
21
+ }
22
+ /**
23
+ * Call after a turn or tool result: write a memory entry (e.g. cross_thread).
24
+ */
25
+ async function writeMemoryForLangChain(agentMemory, req) {
26
+ await agentMemory.memorize(req);
27
+ }
28
+ //# sourceMappingURL=langchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../../src/integrations/langchain.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAmBH,kEAYC;AAKD,0DAKC;AAzBD;;GAEG;AACI,KAAK,UAAU,2BAA2B,CAC/C,WAAgC,EAChC,OAAoC;IAEpC,MAAM,GAAG,GAAuB;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;KAC3C,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAC3C,WAAgC,EAChC,GAAuB;IAEvB,MAAM,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * LangGraph helpers: inject memory into node state or use in graph nodes.
3
+ * Compatible with LangGraph and DeepAgents 1.6.1.
4
+ */
5
+ import type { AgentMemory } from "../core/agent-memory.js";
6
+ import type { MemoryWriteRequest } from "../core/types.js";
7
+ export interface InjectMemoryIntoStateOptions {
8
+ namespace: string;
9
+ query: string;
10
+ stateKey?: string;
11
+ topK?: number;
12
+ budgetTokens?: number;
13
+ }
14
+ /**
15
+ * Retrieve memory and return an object suitable for merging into LangGraph state
16
+ * (e.g. { injectedMemory: string } or custom stateKey).
17
+ */
18
+ export declare function injectMemoryIntoState(agentMemory: AgentMemory, options: InjectMemoryIntoStateOptions): Promise<Record<string, unknown>>;
19
+ /**
20
+ * Write a memory entry from a graph node (e.g. after a tool).
21
+ */
22
+ export declare function writeMemoryFromNode(agentMemory: AgentMemory, req: MemoryWriteRequest): Promise<void>;
23
+ //# sourceMappingURL=langgraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph.d.ts","sourceRoot":"","sources":["../../../src/integrations/langgraph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * LangGraph helpers: inject memory into node state or use in graph nodes.
4
+ * Compatible with LangGraph and DeepAgents 1.6.1.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.injectMemoryIntoState = injectMemoryIntoState;
8
+ exports.writeMemoryFromNode = writeMemoryFromNode;
9
+ /**
10
+ * Retrieve memory and return an object suitable for merging into LangGraph state
11
+ * (e.g. { injectedMemory: string } or custom stateKey).
12
+ */
13
+ async function injectMemoryIntoState(agentMemory, options) {
14
+ const req = {
15
+ namespace: options.namespace,
16
+ query: options.query,
17
+ topK: options.topK ?? 8,
18
+ budgetTokens: options.budgetTokens ?? 1200,
19
+ };
20
+ const result = await agentMemory.recall(req);
21
+ const key = options.stateKey ?? "injectedMemory";
22
+ return { [key]: result.injectedText };
23
+ }
24
+ /**
25
+ * Write a memory entry from a graph node (e.g. after a tool).
26
+ */
27
+ async function writeMemoryFromNode(agentMemory, req) {
28
+ await agentMemory.memorize(req);
29
+ }
30
+ //# sourceMappingURL=langgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../../src/integrations/langgraph.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAiBH,sDAaC;AAKD,kDAKC;AA3BD;;;GAGG;AACI,KAAK,UAAU,qBAAqB,CACzC,WAAwB,EACxB,OAAqC;IAErC,MAAM,GAAG,GAAuB;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;KAC3C,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,WAAwB,EACxB,GAAuB;IAEvB,MAAM,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC"}