@easynet/agent-memory 1.0.18 → 1.0.20

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 (82) hide show
  1. package/README.md +5 -1
  2. package/dist/src/core/agent-memory.d.ts +23 -9
  3. package/dist/src/core/agent-memory.d.ts.map +1 -1
  4. package/dist/src/core/agent-memory.js +113 -14
  5. package/dist/src/core/agent-memory.js.map +1 -1
  6. package/dist/src/core/config.d.ts +48 -18
  7. package/dist/src/core/config.d.ts.map +1 -1
  8. package/dist/src/core/config.js +212 -36
  9. package/dist/src/core/config.js.map +1 -1
  10. package/dist/src/core/policy.d.ts +1 -1
  11. package/dist/src/core/policy.d.ts.map +1 -1
  12. package/dist/src/core/policy.js +2 -1
  13. package/dist/src/core/policy.js.map +1 -1
  14. package/dist/src/core/router.d.ts +6 -6
  15. package/dist/src/core/router.d.ts.map +1 -1
  16. package/dist/src/core/router.js +10 -3
  17. package/dist/src/core/router.js.map +1 -1
  18. package/dist/src/core/types.d.ts +22 -10
  19. package/dist/src/core/types.d.ts.map +1 -1
  20. package/dist/src/core/types.js +41 -0
  21. package/dist/src/core/types.js.map +1 -1
  22. package/dist/src/create-agent-memory.d.ts +28 -18
  23. package/dist/src/create-agent-memory.d.ts.map +1 -1
  24. package/dist/src/create-agent-memory.js +145 -28
  25. package/dist/src/create-agent-memory.js.map +1 -1
  26. package/dist/src/index.d.ts +2 -4
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/index.js +3 -6
  29. package/dist/src/index.js.map +1 -1
  30. package/dist/src/integrations/deepagents-adapter.d.ts +2 -3
  31. package/dist/src/integrations/deepagents-adapter.d.ts.map +1 -1
  32. package/dist/src/integrations/deepagents-adapter.js +6 -11
  33. package/dist/src/integrations/deepagents-adapter.js.map +1 -1
  34. package/dist/src/integrations/langgraph.d.ts +2 -2
  35. package/dist/src/integrations/langgraph.d.ts.map +1 -1
  36. package/dist/src/integrations/langgraph.js.map +1 -1
  37. package/dist/src/providers/in-memory-store.d.ts +3 -3
  38. package/dist/src/providers/in-memory-store.d.ts.map +1 -1
  39. package/dist/src/providers/in-memory-store.js +1 -1
  40. package/dist/src/providers/in-memory-store.js.map +1 -1
  41. package/dist/src/providers/mem0-provider.d.ts +6 -7
  42. package/dist/src/providers/mem0-provider.d.ts.map +1 -1
  43. package/dist/src/providers/mem0-provider.js +47 -50
  44. package/dist/src/providers/mem0-provider.js.map +1 -1
  45. package/dist/src/providers/rag-provider.d.ts +3 -3
  46. package/dist/src/providers/rag-provider.d.ts.map +1 -1
  47. package/dist/src/providers/rag-provider.js.map +1 -1
  48. package/dist/src/providers/sqlite-store.d.ts +3 -3
  49. package/dist/src/providers/sqlite-store.d.ts.map +1 -1
  50. package/dist/src/providers/sqlite-store.js +3 -2
  51. package/dist/src/providers/sqlite-store.js.map +1 -1
  52. package/dist/test/core/agent-memory.test.js +33 -6
  53. package/dist/test/core/agent-memory.test.js.map +1 -1
  54. package/dist/test/core/config.test.js +231 -16
  55. package/dist/test/core/config.test.js.map +1 -1
  56. package/dist/test/core/router.test.js +27 -0
  57. package/dist/test/core/router.test.js.map +1 -1
  58. package/dist/test/create-agent-memory.test.js +116 -37
  59. package/dist/test/create-agent-memory.test.js.map +1 -1
  60. package/dist/test/integration/agent-memory-flow.test.js +9 -21
  61. package/dist/test/integration/agent-memory-flow.test.js.map +1 -1
  62. package/dist/test/integration/real-memory-features.test.d.ts +11 -0
  63. package/dist/test/integration/real-memory-features.test.d.ts.map +1 -0
  64. package/dist/test/integration/real-memory-features.test.js +198 -0
  65. package/dist/test/integration/real-memory-features.test.js.map +1 -0
  66. package/dist/test/integration/url-ingest-flow.test.js +3 -5
  67. package/dist/test/integration/url-ingest-flow.test.js.map +1 -1
  68. package/dist/test/integration/vlm-llm-live.test.js +9 -20
  69. package/dist/test/integration/vlm-llm-live.test.js.map +1 -1
  70. package/dist/test/providers/in-memory-store.test.js +1 -1
  71. package/dist/test/providers/in-memory-store.test.js.map +1 -1
  72. package/dist/test/providers/mem0-provider.test.d.ts +2 -0
  73. package/dist/test/providers/mem0-provider.test.d.ts.map +1 -0
  74. package/dist/test/providers/mem0-provider.test.js +110 -0
  75. package/dist/test/providers/mem0-provider.test.js.map +1 -0
  76. package/dist/test/providers/sqlite-store.test.js +1 -1
  77. package/dist/test/providers/sqlite-store.test.js.map +1 -1
  78. package/package.json +3 -14
  79. package/dist/src/integrations/langchain.d.ts +0 -27
  80. package/dist/src/integrations/langchain.d.ts.map +0 -1
  81. package/dist/src/integrations/langchain.js +0 -28
  82. package/dist/src/integrations/langchain.js.map +0 -1
package/README.md CHANGED
@@ -27,9 +27,13 @@ const { injectedText } = await memory.recall({
27
27
  console.log(injectedText);
28
28
  ```
29
29
 
30
+ ## Memory Type 关键字
31
+
32
+ - Canonical keyword:`thread`、`cross_thread`、`knowledge`
33
+ - 推荐始终写 canonical keyword
34
+
30
35
  可选能力:
31
36
  - `memorize({ url })`:直接摄入本地/远程 PDF、txt、HTML、图片(写入 `knowledge`)
32
- - `retrieveContextForLangChain` / `writeMemoryForLangChain`:LangChain 快捷接入
33
37
 
34
38
  ## 最简单示例(带详细注释)
35
39
 
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * AgentMemory: unified facade. Primary APIs: memorize (store), recall (retrieve).
3
- * write / retrieveForPrompt kept as aliases for compatibility.
4
3
  */
5
- import type { MemoryItem, MemoryQueryRequest, MemoryType, MemoryWriteRequest, MemorizeRequest, RecallResult, RetrieveResult } from "./types.js";
4
+ import type { MemoryType, MemoryItem, MemoryQueryParameters, MemorizeParameters, RecallResult } from "./types.js";
6
5
  import { PolicyEngine } from "./policy.js";
7
6
  import type { TraceRecorder } from "./observability.js";
8
7
  import { PrivacyGuard } from "./privacy.js";
@@ -16,6 +15,22 @@ export interface AgentMemoryOptions {
16
15
  privacyGuard?: PrivacyGuard;
17
16
  /** When type omitted: used to decide type; otherwise default cross_thread. */
18
17
  classifyMemory?: ClassifyMemoryFn;
18
+ /** Optional automatic compaction for thread/session memories. */
19
+ sessionCompaction?: {
20
+ enabled?: boolean;
21
+ maxTokens?: number;
22
+ keepRecentTurns?: number;
23
+ summaryKey?: string;
24
+ checkEveryTurns?: number;
25
+ summarize?: (input: {
26
+ namespace: string;
27
+ oldTurns: Array<{
28
+ content: string;
29
+ metadata?: Record<string, unknown>;
30
+ }>;
31
+ previousSummary?: string;
32
+ }) => Promise<string>;
33
+ };
19
34
  }
20
35
  export declare class AgentMemory {
21
36
  private router;
@@ -23,19 +38,18 @@ export declare class AgentMemory {
23
38
  private traceRecorder?;
24
39
  private privacy;
25
40
  private classifyMemory?;
41
+ private sessionCompaction;
42
+ private threadWriteCount;
26
43
  constructor(options: AgentMemoryOptions);
27
44
  /** Store one memory (primary API). Type from classifyMemory or default cross_thread when omitted. */
28
- memorize(req: MemorizeRequest): Promise<MemoryItem>;
29
- /** @deprecated Use memorize */
30
- write(req: MemoryWriteRequest): Promise<MemoryItem>;
45
+ memorize(req: MemorizeParameters): Promise<MemoryItem>;
31
46
  /** Retrieve memories for query and build injectable text (primary API). Default types: knowledge, cross_thread. */
32
- recall(req: MemoryQueryRequest): Promise<RecallResult>;
33
- /** @deprecated Use recall */
34
- retrieveForPrompt(req: MemoryQueryRequest): Promise<RetrieveResult>;
47
+ recall(req: MemoryQueryParameters): Promise<RecallResult>;
35
48
  deleteByNamespace(namespace: string): Promise<void>;
36
- /** Get one item by namespace and key (e.g. path). Requires provider to support getByKey. */
49
+ /** Get one item by namespace and key (metadata.key). Requires provider to support getByKey. */
37
50
  getByKey(namespace: string, key: string): Promise<MemoryItem | null>;
38
51
  /** Delete item by namespace and key. */
39
52
  deleteByKey(namespace: string, key: string): Promise<void>;
53
+ private maybeCompactThreadNamespace;
40
54
  }
41
55
  //# sourceMappingURL=agent-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-memory.d.ts","sourceRoot":"","sources":["../../../src/core/agent-memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,qHAAqH;AACrH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAmB;gBAE9B,OAAO,EAAE,kBAAkB;IAQvC,qGAAqG;IAC/F,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAmCzD,+BAA+B;IACzB,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIzD,mHAAmH;IAC7G,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IA+C5D,6BAA6B;IACvB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAInE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,4FAA4F;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI1E,wCAAwC;IAClC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjE"}
1
+ {"version":3,"file":"agent-memory.d.ts","sourceRoot":"","sources":["../../../src/core/agent-memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,qBAAqB,EAErB,kBAAkB,EAClB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,qHAAqH;AACrH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,iEAAiE;IACjE,iBAAiB,CAAC,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,CAAC,CAAC;YACzE,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KACvB,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAmB;IAC1C,OAAO,CAAC,iBAAiB,CAWvB;IACF,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,OAAO,EAAE,kBAAkB;IAmBvC,qGAAqG;IAC/F,QAAQ,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuD5D,mHAAmH;IAC7G,MAAM,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IA8CzD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,+FAA+F;IACzF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI1E,wCAAwC;IAClC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAIlD,2BAA2B;CAoE1C"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
3
  * AgentMemory: unified facade. Primary APIs: memorize (store), recall (retrieve).
4
- * write / retrieveForPrompt kept as aliases for compatibility.
5
4
  */
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  exports.AgentMemory = void 0;
7
+ const types_js_1 = require("./types.js");
8
8
  const policy_js_1 = require("./policy.js");
9
9
  const observability_js_1 = require("./observability.js");
10
10
  const privacy_js_1 = require("./privacy.js");
@@ -15,19 +15,40 @@ class AgentMemory {
15
15
  traceRecorder;
16
16
  privacy;
17
17
  classifyMemory;
18
+ sessionCompaction;
19
+ threadWriteCount = new Map();
18
20
  constructor(options) {
19
21
  this.router = options.router;
20
22
  this.policy = options.policy ?? new policy_js_1.PolicyEngine();
21
23
  this.traceRecorder = options.traceRecorder;
22
24
  this.privacy = options.privacyGuard ?? new privacy_js_1.PrivacyGuard();
23
25
  this.classifyMemory = options.classifyMemory;
26
+ const compaction = options.sessionCompaction ?? {};
27
+ this.sessionCompaction = {
28
+ enabled: compaction.enabled ?? false,
29
+ maxTokens: Math.max(1, Math.floor(compaction.maxTokens ?? 3000)),
30
+ keepRecentTurns: Math.max(0, Math.floor(compaction.keepRecentTurns ?? 12)),
31
+ summaryKey: typeof compaction.summaryKey === "string" && compaction.summaryKey.trim()
32
+ ? compaction.summaryKey.trim()
33
+ : "__session_summary__",
34
+ checkEveryTurns: Math.max(1, Math.floor(compaction.checkEveryTurns ?? 3)),
35
+ summarize: compaction.summarize ?? defaultSummarizeThreadTurns,
36
+ };
24
37
  }
25
38
  /** Store one memory (primary API). Type from classifyMemory or default cross_thread when omitted. */
26
39
  async memorize(req) {
27
- let type = req.type;
28
- if (type === undefined) {
40
+ let type;
41
+ if (req.type !== undefined) {
42
+ const normalized = (0, types_js_1.normalizeMemoryTypeKeyword)(req.type);
43
+ if (!normalized) {
44
+ throw new Error(`Unsupported memory type: ${String(req.type)}. Supported keywords: ${types_js_1.MEMORY_TYPE_KEYWORDS.join(", ")}`);
45
+ }
46
+ type = normalized;
47
+ }
48
+ else {
29
49
  if (this.classifyMemory && req.content) {
30
- type = await this.classifyMemory(req.content, req.metadata);
50
+ const classified = await this.classifyMemory(req.content, req.metadata);
51
+ type = (0, types_js_1.normalizeMemoryTypeKeyword)(classified) ?? "cross_thread";
31
52
  }
32
53
  else {
33
54
  type = "cross_thread";
@@ -56,11 +77,15 @@ class AgentMemory {
56
77
  updated_at: now,
57
78
  },
58
79
  };
59
- return this.router.write(finalReq);
60
- }
61
- /** @deprecated Use memorize */
62
- async write(req) {
63
- return this.memorize(req);
80
+ const written = await this.router.write(finalReq);
81
+ const isInternalCompactionWrite = !!finalReq.metadata?.__compaction_internal;
82
+ if (!isInternalCompactionWrite &&
83
+ this.sessionCompaction.enabled &&
84
+ finalReq.type === "thread" &&
85
+ finalReq.namespace) {
86
+ await this.maybeCompactThreadNamespace(finalReq.namespace);
87
+ }
88
+ return written;
64
89
  }
65
90
  /** Retrieve memories for query and build injectable text (primary API). Default types: knowledge, cross_thread. */
66
91
  async recall(req) {
@@ -99,10 +124,6 @@ class AgentMemory {
99
124
  traceId,
100
125
  };
101
126
  }
102
- /** @deprecated Use recall */
103
- async retrieveForPrompt(req) {
104
- return this.recall(req);
105
- }
106
127
  async deleteByNamespace(namespace) {
107
128
  const req = {
108
129
  namespace,
@@ -114,7 +135,7 @@ class AgentMemory {
114
135
  await this.router.delete(item.id, namespace);
115
136
  }
116
137
  }
117
- /** Get one item by namespace and key (e.g. path). Requires provider to support getByKey. */
138
+ /** Get one item by namespace and key (metadata.key). Requires provider to support getByKey. */
118
139
  async getByKey(namespace, key) {
119
140
  return this.router.getByKey(namespace, key);
120
141
  }
@@ -122,6 +143,84 @@ class AgentMemory {
122
143
  async deleteByKey(namespace, key) {
123
144
  return this.router.deleteByKey(namespace, key);
124
145
  }
146
+ async maybeCompactThreadNamespace(namespace) {
147
+ const count = (this.threadWriteCount.get(namespace) ?? 0) + 1;
148
+ this.threadWriteCount.set(namespace, count);
149
+ if (count % this.sessionCompaction.checkEveryTurns !== 0)
150
+ return;
151
+ const items = await this.router.query({
152
+ namespace,
153
+ query: "",
154
+ topK: 10_000,
155
+ types: ["thread"],
156
+ });
157
+ if (items.length === 0)
158
+ return;
159
+ const estimatedTokens = items.reduce((sum, item) => sum + estimateTokens(item.content), 0);
160
+ if (estimatedTokens <= this.sessionCompaction.maxTokens)
161
+ return;
162
+ const ordered = [...items].sort((a, b) => {
163
+ const at = Date.parse(a.metadata?.updated_at ?? a.metadata?.created_at ?? "");
164
+ const bt = Date.parse(b.metadata?.updated_at ?? b.metadata?.created_at ?? "");
165
+ return (Number.isNaN(at) ? 0 : at) - (Number.isNaN(bt) ? 0 : bt);
166
+ });
167
+ const summaryKey = this.sessionCompaction.summaryKey;
168
+ const previousSummary = ordered.find((item) => item.metadata?.key === summaryKey)?.content;
169
+ const normalTurns = ordered.filter((item) => item.metadata?.key !== summaryKey);
170
+ if (normalTurns.length <= this.sessionCompaction.keepRecentTurns)
171
+ return;
172
+ const splitIndex = Math.max(0, normalTurns.length - this.sessionCompaction.keepRecentTurns);
173
+ const oldTurns = normalTurns.slice(0, splitIndex);
174
+ const recentTurns = normalTurns.slice(splitIndex);
175
+ if (oldTurns.length === 0)
176
+ return;
177
+ const summary = await this.sessionCompaction.summarize({
178
+ namespace,
179
+ oldTurns: oldTurns.map((item) => ({
180
+ content: item.content,
181
+ metadata: item.metadata,
182
+ })),
183
+ previousSummary,
184
+ });
185
+ if (!summary || !summary.trim())
186
+ return;
187
+ for (const item of ordered) {
188
+ await this.router.delete(item.id, namespace);
189
+ }
190
+ await this.memorize({
191
+ namespace,
192
+ type: "thread",
193
+ content: summary,
194
+ metadata: {
195
+ key: summaryKey,
196
+ __compaction_internal: true,
197
+ },
198
+ });
199
+ for (const item of recentTurns) {
200
+ await this.memorize({
201
+ namespace,
202
+ type: "thread",
203
+ content: item.content,
204
+ metadata: {
205
+ ...item.metadata,
206
+ __compaction_internal: true,
207
+ },
208
+ });
209
+ }
210
+ }
125
211
  }
126
212
  exports.AgentMemory = AgentMemory;
213
+ function estimateTokens(text) {
214
+ return Math.ceil((text?.length ?? 0) / 4);
215
+ }
216
+ async function defaultSummarizeThreadTurns(input) {
217
+ const prefix = input.previousSummary?.trim()
218
+ ? `Previous summary:\n${input.previousSummary.trim()}\n\n`
219
+ : "";
220
+ const body = input.oldTurns
221
+ .map((turn, idx) => `${idx + 1}. ${turn.content}`)
222
+ .join("\n");
223
+ const merged = `${prefix}${body}`.trim();
224
+ return merged.length > 1200 ? `${merged.slice(0, 1200)}...` : merged;
225
+ }
127
226
  //# sourceMappingURL=agent-memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-memory.js","sourceRoot":"","sources":["../../../src/core/agent-memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-memory.js","sourceRoot":"","sources":["../../../src/core/agent-memory.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,20 @@
1
1
  /**
2
2
  * YAML config types and loader. Config-driven; no use-case hardcoding.
3
3
  */
4
- import type { MemoryType } from "./types.js";
5
- export interface AgentMemoryProviderConfig {
4
+ import { type MemoryType } from "./types.js";
5
+ export interface AgentMemoryStoreConfig {
6
6
  id: string;
7
7
  type: "in_memory" | "rag" | "mem0" | "sqlite" | "llamaindex" | "sqlite_vec" | "extension";
8
+ /** Preferred: typed store config. */
9
+ config?: Record<string, unknown>;
8
10
  /** sqlite: dbPath, etc.; rag: embed/search; mem0: pass instance via overrides at runtime */
9
11
  options?: Record<string, unknown>;
10
12
  }
13
+ export type AgentMemoryStoresByTypeEntry = Omit<AgentMemoryStoreConfig, "id"> & {
14
+ id?: string;
15
+ };
16
+ export type AgentMemoryStoresByTypeConfig = Partial<Record<MemoryType, AgentMemoryStoresByTypeEntry | AgentMemoryStoresByTypeEntry[]>>;
17
+ export type AgentMemoryStoresConfig = AgentMemoryStoreConfig[] | AgentMemoryStoresByTypeConfig;
11
18
  export interface ExtensionProviderOptions {
12
19
  /** npm package name or local module path (relative path resolved from config file directory). */
13
20
  package: string;
@@ -39,23 +46,43 @@ export interface AgentMemoryPrivacyConfig {
39
46
  /** If true, redact content that looks like secrets before storing (when implemented). */
40
47
  redactSecrets?: boolean;
41
48
  }
49
+ export interface AgentMemorySessionCompactionConfig {
50
+ enabled?: boolean;
51
+ maxTokens?: number;
52
+ keepRecentTurns?: number;
53
+ summaryKey?: string;
54
+ checkEveryTurns?: number;
55
+ }
56
+ export interface AgentMemoryProfileConfig {
57
+ storeId?: string;
58
+ storeIds?: string[];
59
+ /** Inline store config for this memory type (preferred for simple configs). */
60
+ store?: Omit<AgentMemoryStoreConfig, "id"> & {
61
+ id?: string;
62
+ };
63
+ allowWrite?: boolean;
64
+ maxItems?: number;
65
+ budgetTokens?: number;
66
+ /** Thread-specific compaction config. */
67
+ sessionCompaction?: AgentMemorySessionCompactionConfig;
68
+ }
42
69
  /** mem0ai Memory options (same shape as mem0ai/oss Memory config; can be in YAML) */
43
70
  export interface Mem0Config {
44
71
  version?: string;
45
72
  embedder?: {
46
- provider?: string;
73
+ type?: string;
47
74
  config?: Record<string, unknown>;
48
75
  };
49
76
  vectorStore?: {
50
- provider?: string;
77
+ type?: string;
51
78
  config?: Record<string, unknown>;
52
79
  };
53
80
  llm?: {
54
- provider?: string;
81
+ type?: string;
55
82
  config?: Record<string, unknown>;
56
83
  };
57
84
  historyStore?: {
58
- provider?: string;
85
+ type?: string;
59
86
  config?: Record<string, unknown>;
60
87
  };
61
88
  historyDbPath?: string;
@@ -68,33 +95,36 @@ export interface VlmConfig {
68
95
  captionUrl?: string;
69
96
  captionPrompt?: string;
70
97
  timeoutMs?: number;
98
+ /** Inject VLM model context from @easynet/agent-model into llamaindex provider options.context. */
99
+ useAgentModel?: boolean;
100
+ /** Optional models.yaml path for agent-model (default: process.cwd()/models.yaml). */
101
+ modelsConfigPath?: string;
71
102
  [key: string]: unknown;
72
103
  }
73
104
  export interface AgentMemoryConfig {
74
- providers: AgentMemoryProviderConfig[];
75
- /** Fallback provider when no rule/type mapping matches. */
76
- defaultProvider?: string;
105
+ /** Storage backends. */
106
+ stores?: AgentMemoryStoresConfig;
107
+ /** Fallback store when no type mapping matches. */
108
+ defaultStore?: string;
77
109
  /** Per-type memory profile (single source of truth for routing and policy). */
78
- memoryTypes?: Partial<Record<MemoryType, {
79
- providerId?: string;
80
- allowWrite?: boolean;
81
- maxItems?: number;
82
- budgetTokens?: number;
83
- }>>;
110
+ memory?: Partial<Record<MemoryType, AgentMemoryProfileConfig>>;
84
111
  observability?: AgentMemoryObservabilityConfig;
85
112
  privacy?: AgentMemoryPrivacyConfig;
86
113
  vlm?: VlmConfig;
87
114
  }
88
115
  export interface ResolvedAgentMemoryConfig extends AgentMemoryConfig {
89
- defaultProvider: string;
90
- memoryTypes: Record<MemoryType, {
91
- providerId: string;
116
+ stores: AgentMemoryStoreConfig[];
117
+ defaultStore: string;
118
+ memory: Record<MemoryType, AgentMemoryProfileConfig & {
119
+ storeId: string;
120
+ storeIds: string[];
92
121
  allowWrite: boolean;
93
122
  maxItems?: number;
94
123
  budgetTokens?: number;
95
124
  }>;
96
125
  router: AgentMemoryRouterConfig;
97
126
  policy: AgentMemoryPolicyConfig;
127
+ sessionCompaction: Required<AgentMemorySessionCompactionConfig>;
98
128
  }
99
129
  /**
100
130
  * Load config from YAML file; returns default if file not found.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"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"}