@easynet/agent-memory 1.0.17 → 1.0.19

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 (84) hide show
  1. package/README.md +62 -24
  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 +60 -12
  7. package/dist/src/core/config.d.ts.map +1 -1
  8. package/dist/src/core/config.js +250 -13
  9. package/dist/src/core/config.js.map +1 -1
  10. package/dist/src/core/policy.d.ts +3 -1
  11. package/dist/src/core/policy.d.ts.map +1 -1
  12. package/dist/src/core/policy.js +5 -2
  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 +151 -35
  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 +266 -15
  55. package/dist/test/core/config.test.js.map +1 -1
  56. package/dist/test/core/policy.test.js +12 -0
  57. package/dist/test/core/policy.test.js.map +1 -1
  58. package/dist/test/core/router.test.js +27 -0
  59. package/dist/test/core/router.test.js.map +1 -1
  60. package/dist/test/create-agent-memory.test.js +116 -45
  61. package/dist/test/create-agent-memory.test.js.map +1 -1
  62. package/dist/test/integration/agent-memory-flow.test.js +9 -24
  63. package/dist/test/integration/agent-memory-flow.test.js.map +1 -1
  64. package/dist/test/integration/real-memory-features.test.d.ts +11 -0
  65. package/dist/test/integration/real-memory-features.test.d.ts.map +1 -0
  66. package/dist/test/integration/real-memory-features.test.js +198 -0
  67. package/dist/test/integration/real-memory-features.test.js.map +1 -0
  68. package/dist/test/integration/url-ingest-flow.test.js +3 -6
  69. package/dist/test/integration/url-ingest-flow.test.js.map +1 -1
  70. package/dist/test/integration/vlm-llm-live.test.js +9 -21
  71. package/dist/test/integration/vlm-llm-live.test.js.map +1 -1
  72. package/dist/test/providers/in-memory-store.test.js +1 -1
  73. package/dist/test/providers/in-memory-store.test.js.map +1 -1
  74. package/dist/test/providers/mem0-provider.test.d.ts +2 -0
  75. package/dist/test/providers/mem0-provider.test.d.ts.map +1 -0
  76. package/dist/test/providers/mem0-provider.test.js +110 -0
  77. package/dist/test/providers/mem0-provider.test.js.map +1 -0
  78. package/dist/test/providers/sqlite-store.test.js +1 -1
  79. package/dist/test/providers/sqlite-store.test.js.map +1 -1
  80. package/package.json +3 -14
  81. package/dist/src/integrations/langchain.d.ts +0 -27
  82. package/dist/src/integrations/langchain.d.ts.map +0 -1
  83. package/dist/src/integrations/langchain.js +0 -28
  84. 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
 
@@ -87,16 +91,12 @@ providers:
87
91
  - id: default
88
92
  type: in_memory
89
93
 
90
- router:
91
- # 所有读写都走 default provider
92
- defaultProvider: default
93
- rules: []
94
+ defaultProvider: default
94
95
 
95
- policy:
96
- # 允许写入三类记忆
97
- allowedWriteTypes: [thread, cross_thread, knowledge]
98
- # 单类型最多保留多少条(超过后由策略裁剪)
99
- maxItemsPerType: 20
96
+ memoryTypes:
97
+ thread: { providerId: default, allowWrite: true, maxItems: 20 }
98
+ cross_thread: { providerId: default, allowWrite: true, maxItems: 20 }
99
+ knowledge: { providerId: default, allowWrite: true, maxItems: 20 }
100
100
 
101
101
  observability:
102
102
  # 是否记录 recall trace(建议开发期开,生产按需)
@@ -117,18 +117,49 @@ providers:
117
117
  # SQLite 文件路径;相对路径以该 YAML 所在目录为基准
118
118
  dbPath: ./data/agent-memory.db
119
119
 
120
- router:
121
- defaultProvider: default
122
- rules: []
120
+ defaultProvider: default
123
121
 
124
- policy:
125
- allowedWriteTypes: [thread, cross_thread, knowledge]
126
- maxItemsPerType: 50
122
+ memoryTypes:
123
+ thread: { providerId: default, allowWrite: true, maxItems: 50 }
124
+ cross_thread: { providerId: default, allowWrite: true, maxItems: 50 }
125
+ knowledge: { providerId: default, allowWrite: true, maxItems: 50 }
127
126
 
128
127
  observability:
129
128
  trace: true
130
129
  ```
131
130
 
131
+ ## 分层配置(按 memory type)
132
+
133
+ 当你希望 `thread / cross_thread / knowledge` 各自有独立设置时,推荐使用 `memoryTypes`:
134
+
135
+ ```yaml
136
+ providers:
137
+ - id: default
138
+ type: in_memory
139
+ - id: docs
140
+ type: sqlite
141
+ options:
142
+ dbPath: ./data/docs.db
143
+
144
+ defaultProvider: default
145
+
146
+ memoryTypes:
147
+ thread:
148
+ allowWrite: false
149
+ cross_thread:
150
+ maxItems: 20
151
+ budgetTokens: 500
152
+ knowledge:
153
+ providerId: docs
154
+ maxItems: 8
155
+ budgetTokens: 900
156
+ ```
157
+
158
+ 说明:
159
+ - `memoryTypes.*.providerId` 决定该类型路由到哪个 provider
160
+ - `memoryTypes.*.allowWrite` 控制该类型是否允许写入
161
+ - `memoryTypes.*.maxItems / budgetTokens` 控制该类型召回裁剪预算
162
+
132
163
  ## LlamaIndex / Sqlite-Vec YAML(内置类型)
133
164
 
134
165
  ```yaml
@@ -142,11 +173,15 @@ providers:
142
173
  dbPath: ./data/long-term.sqlite
143
174
  dimensions: 1024
144
175
 
145
- router:
146
- defaultProvider: knowledge
147
- rules:
148
- - types: [cross_thread]
149
- providerId: longterm
176
+ defaultProvider: knowledge
177
+
178
+ memoryTypes:
179
+ thread:
180
+ providerId: knowledge
181
+ cross_thread:
182
+ providerId: longterm
183
+ knowledge:
184
+ providerId: knowledge
150
185
  ```
151
186
 
152
187
  依赖说明:
@@ -179,9 +214,12 @@ providers:
179
214
  options:
180
215
  anyKey: anyValue
181
216
 
182
- router:
183
- defaultProvider: ext
184
- rules: []
217
+ defaultProvider: ext
218
+
219
+ memoryTypes:
220
+ thread: { providerId: ext }
221
+ cross_thread: { providerId: ext }
222
+ knowledge: { providerId: ext }
185
223
  ```
186
224
 
187
225
  扩展导出约定:
@@ -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;
@@ -27,7 +34,7 @@ export interface AgentMemoryRouterConfig {
27
34
  }
28
35
  export interface AgentMemoryPolicyConfig {
29
36
  allowedWriteTypes?: MemoryType[];
30
- maxItemsPerType?: number;
37
+ maxItemsByType?: Partial<Record<MemoryType, number>>;
31
38
  budgetPerType?: Partial<Record<MemoryType, number>>;
32
39
  }
33
40
  export interface AgentMemoryObservabilityConfig {
@@ -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,19 +95,40 @@ 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
- router: AgentMemoryRouterConfig;
76
- policy?: AgentMemoryPolicyConfig;
105
+ /** Storage backends. */
106
+ stores?: AgentMemoryStoresConfig;
107
+ /** Fallback store when no type mapping matches. */
108
+ defaultStore?: string;
109
+ /** Per-type memory profile (single source of truth for routing and policy). */
110
+ memory?: Partial<Record<MemoryType, AgentMemoryProfileConfig>>;
77
111
  observability?: AgentMemoryObservabilityConfig;
78
112
  privacy?: AgentMemoryPrivacyConfig;
79
- mem0?: Mem0Config;
80
113
  vlm?: VlmConfig;
81
114
  }
115
+ export interface ResolvedAgentMemoryConfig extends AgentMemoryConfig {
116
+ stores: AgentMemoryStoreConfig[];
117
+ defaultStore: string;
118
+ memory: Record<MemoryType, AgentMemoryProfileConfig & {
119
+ storeId: string;
120
+ storeIds: string[];
121
+ allowWrite: boolean;
122
+ maxItems?: number;
123
+ budgetTokens?: number;
124
+ }>;
125
+ router: AgentMemoryRouterConfig;
126
+ policy: AgentMemoryPolicyConfig;
127
+ sessionCompaction: Required<AgentMemorySessionCompactionConfig>;
128
+ }
82
129
  /**
83
130
  * Load config from YAML file; returns default if file not found.
84
131
  */
85
- export declare function loadConfigFromYaml(configPath: string): Promise<AgentMemoryConfig>;
132
+ export declare function loadConfigFromYaml(configPath: string): Promise<ResolvedAgentMemoryConfig>;
133
+ export declare function resolveConfig(config: Partial<AgentMemoryConfig>): ResolvedAgentMemoryConfig;
86
134
  //# sourceMappingURL=config.d.ts.map
@@ -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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"}