@easynet/agent-memory 0.0.2
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.
- package/README.md +260 -0
- package/bin/chat +11 -0
- package/dist/adapters/index.d.ts +8 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +29 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mem0/mem0-store.d.ts +29 -0
- package/dist/adapters/mem0/mem0-store.d.ts.map +1 -0
- package/dist/adapters/mem0/mem0-store.js +174 -0
- package/dist/adapters/mem0/mem0-store.js.map +1 -0
- package/dist/adapters/rag-http/rag-http-retriever.d.ts +18 -0
- package/dist/adapters/rag-http/rag-http-retriever.d.ts.map +1 -0
- package/dist/adapters/rag-http/rag-http-retriever.js +71 -0
- package/dist/adapters/rag-http/rag-http-retriever.js.map +1 -0
- package/dist/adapters/types.d.ts +25 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/boot/boot-rebuilder.d.ts +26 -0
- package/dist/boot/boot-rebuilder.d.ts.map +1 -0
- package/dist/boot/boot-rebuilder.js +112 -0
- package/dist/boot/boot-rebuilder.js.map +1 -0
- package/dist/boot/index.d.ts +3 -0
- package/dist/boot/index.d.ts.map +1 -0
- package/dist/boot/index.js +6 -0
- package/dist/boot/index.js.map +1 -0
- package/dist/cli/chat-split.d.ts +22 -0
- package/dist/cli/chat-split.d.ts.map +1 -0
- package/dist/cli/chat-split.js +187 -0
- package/dist/cli/chat-split.js.map +1 -0
- package/dist/cli/chat.d.ts +19 -0
- package/dist/cli/chat.d.ts.map +1 -0
- package/dist/cli/chat.js +266 -0
- package/dist/cli/chat.js.map +1 -0
- package/dist/cli/commands/command-handler.d.ts +32 -0
- package/dist/cli/commands/command-handler.d.ts.map +1 -0
- package/dist/cli/commands/command-handler.js +143 -0
- package/dist/cli/commands/command-handler.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/display-manager.d.ts +18 -0
- package/dist/cli/ui/display-manager.d.ts.map +1 -0
- package/dist/cli/ui/display-manager.js +69 -0
- package/dist/cli/ui/display-manager.js.map +1 -0
- package/dist/cli/ui/screen-layout.d.ts +12 -0
- package/dist/cli/ui/screen-layout.d.ts.map +1 -0
- package/dist/cli/ui/screen-layout.js +125 -0
- package/dist/cli/ui/screen-layout.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +9 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +107 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/context/context-builder.d.ts +18 -0
- package/dist/context/context-builder.d.ts.map +1 -0
- package/dist/context/context-builder.js +91 -0
- package/dist/context/context-builder.js.map +1 -0
- package/dist/core/agent-memory.d.ts +50 -0
- package/dist/core/agent-memory.d.ts.map +1 -0
- package/dist/core/agent-memory.js +297 -0
- package/dist/core/agent-memory.js.map +1 -0
- package/dist/embedding/embedder.d.ts +49 -0
- package/dist/embedding/embedder.d.ts.map +1 -0
- package/dist/embedding/embedder.js +146 -0
- package/dist/embedding/embedder.js.map +1 -0
- package/dist/embedding/index.d.ts +3 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +8 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/gate/deduplicator.d.ts +22 -0
- package/dist/gate/deduplicator.d.ts.map +1 -0
- package/dist/gate/deduplicator.js +74 -0
- package/dist/gate/deduplicator.js.map +1 -0
- package/dist/gate/extractor.d.ts +33 -0
- package/dist/gate/extractor.d.ts.map +1 -0
- package/dist/gate/extractor.js +122 -0
- package/dist/gate/extractor.js.map +1 -0
- package/dist/gate/index.d.ts +3 -0
- package/dist/gate/index.d.ts.map +1 -0
- package/dist/gate/index.js +6 -0
- package/dist/gate/index.js.map +1 -0
- package/dist/gate/memory-gate.d.ts +27 -0
- package/dist/gate/memory-gate.d.ts.map +1 -0
- package/dist/gate/memory-gate.js +86 -0
- package/dist/gate/memory-gate.js.map +1 -0
- package/dist/gate/redactor.d.ts +14 -0
- package/dist/gate/redactor.d.ts.map +1 -0
- package/dist/gate/redactor.js +24 -0
- package/dist/gate/redactor.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/indexing/in-memory-index.d.ts +67 -0
- package/dist/indexing/in-memory-index.d.ts.map +1 -0
- package/dist/indexing/in-memory-index.js +135 -0
- package/dist/indexing/in-memory-index.js.map +1 -0
- package/dist/indexing/index.d.ts +3 -0
- package/dist/indexing/index.d.ts.map +1 -0
- package/dist/indexing/index.js +6 -0
- package/dist/indexing/index.js.map +1 -0
- package/dist/persistence/database/schema.d.ts +6 -0
- package/dist/persistence/database/schema.d.ts.map +1 -0
- package/dist/persistence/database/schema.js +75 -0
- package/dist/persistence/database/schema.js.map +1 -0
- package/dist/persistence/index.d.ts +3 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +6 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/repository/embedding-operations.d.ts +17 -0
- package/dist/persistence/repository/embedding-operations.d.ts.map +1 -0
- package/dist/persistence/repository/embedding-operations.js +58 -0
- package/dist/persistence/repository/embedding-operations.js.map +1 -0
- package/dist/persistence/repository/memory-operations.d.ts +28 -0
- package/dist/persistence/repository/memory-operations.d.ts.map +1 -0
- package/dist/persistence/repository/memory-operations.js +87 -0
- package/dist/persistence/repository/memory-operations.js.map +1 -0
- package/dist/persistence/repository/meta-operations.d.ts +15 -0
- package/dist/persistence/repository/meta-operations.d.ts.map +1 -0
- package/dist/persistence/repository/meta-operations.js +20 -0
- package/dist/persistence/repository/meta-operations.js.map +1 -0
- package/dist/persistence/sqlite-repo.d.ts +58 -0
- package/dist/persistence/sqlite-repo.d.ts.map +1 -0
- package/dist/persistence/sqlite-repo.js +81 -0
- package/dist/persistence/sqlite-repo.js.map +1 -0
- package/dist/persistence/utils/hash.d.ts +8 -0
- package/dist/persistence/utils/hash.d.ts.map +1 -0
- package/dist/persistence/utils/hash.js +48 -0
- package/dist/persistence/utils/hash.js.map +1 -0
- package/dist/persistence/utils/serialization.d.ts +33 -0
- package/dist/persistence/utils/serialization.d.ts.map +1 -0
- package/dist/persistence/utils/serialization.js +85 -0
- package/dist/persistence/utils/serialization.js.map +1 -0
- package/dist/processing/document/document-processor.d.ts +30 -0
- package/dist/processing/document/document-processor.d.ts.map +1 -0
- package/dist/processing/document/document-processor.js +158 -0
- package/dist/processing/document/document-processor.js.map +1 -0
- package/dist/processing/document/index.d.ts +3 -0
- package/dist/processing/document/index.d.ts.map +1 -0
- package/dist/processing/document/index.js +6 -0
- package/dist/processing/document/index.js.map +1 -0
- package/dist/ranker/ranker.d.ts +26 -0
- package/dist/ranker/ranker.d.ts.map +1 -0
- package/dist/ranker/ranker.js +40 -0
- package/dist/ranker/ranker.js.map +1 -0
- package/dist/recall/recall-engine.d.ts +19 -0
- package/dist/recall/recall-engine.d.ts.map +1 -0
- package/dist/recall/recall-engine.js +79 -0
- package/dist/recall/recall-engine.js.map +1 -0
- package/dist/types/config.d.ts +821 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +128 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/document.d.ts +37 -0
- package/dist/types/document.d.ts.map +1 -0
- package/dist/types/document.js +6 -0
- package/dist/types/document.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +53 -0
package/README.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# agent-memory
|
|
2
|
+
|
|
3
|
+
一个简单易用的 Agent 记忆管理 SDK,支持长期记忆存储、文档记忆和多模态文档处理。
|
|
4
|
+
|
|
5
|
+
## 快速开始
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install agent-memory
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import { AgentMemory } from "agent-memory";
|
|
13
|
+
|
|
14
|
+
const am = await AgentMemory.fromYaml("./agent-memory.yaml");
|
|
15
|
+
|
|
16
|
+
// 记忆对话
|
|
17
|
+
await am.remember({
|
|
18
|
+
messages: [
|
|
19
|
+
{ role: "user", content: "发布流程:先 dc-dev-testing,再 dc-prod" }
|
|
20
|
+
],
|
|
21
|
+
actor: { id: "U123", type: "user" },
|
|
22
|
+
scope: { projectId: "bds" },
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// 记忆文档(支持多模态)
|
|
26
|
+
await am.rememberDocument({
|
|
27
|
+
document: {
|
|
28
|
+
id: "doc_001",
|
|
29
|
+
type: "pdf",
|
|
30
|
+
text: "PDF提取的文本内容...",
|
|
31
|
+
metadata: { title: "技术文档", path: "/docs/tech.pdf" },
|
|
32
|
+
},
|
|
33
|
+
actor: { id: "system", type: "system" },
|
|
34
|
+
scope: { projectId: "main-project" },
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// 召回
|
|
38
|
+
const result = await am.recall({
|
|
39
|
+
query: "发布流程是什么?",
|
|
40
|
+
scope: { projectId: "bds" },
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
console.log(result.context);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 主要特性
|
|
47
|
+
|
|
48
|
+
- ✅ **双模式支持**:Platform API 模式 和 In-Memory 模式(SQLite + 向量索引)
|
|
49
|
+
- ✅ **文档记忆**:支持文本、PDF、图片、Markdown、HTML、代码等多种文档类型
|
|
50
|
+
- ✅ **多模态支持**:图片OCR文本、PDF分页、代码文档等
|
|
51
|
+
- ✅ **自动分块**:大文档自动分块,支持重叠窗口
|
|
52
|
+
- ✅ **MemoryGate**:脱敏、抽取、过滤、去重
|
|
53
|
+
- ✅ **向量检索**:基于 Embedding 的语义搜索
|
|
54
|
+
- ✅ **YAML配置**:简单易用的配置文件
|
|
55
|
+
|
|
56
|
+
## 文档记忆
|
|
57
|
+
|
|
58
|
+
支持多种文档类型:
|
|
59
|
+
|
|
60
|
+
- `text` - 纯文本
|
|
61
|
+
- `pdf` - PDF文档(支持分页)
|
|
62
|
+
- `image` - 图片(支持OCR文本)
|
|
63
|
+
- `markdown` - Markdown文档
|
|
64
|
+
- `html` - HTML文档
|
|
65
|
+
- `code` - 代码文件
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// 记忆PDF文档(自动分块)
|
|
69
|
+
await am.rememberDocument({
|
|
70
|
+
document: {
|
|
71
|
+
id: "pdf_001",
|
|
72
|
+
type: "pdf",
|
|
73
|
+
text: "PDF内容...",
|
|
74
|
+
page: 1,
|
|
75
|
+
metadata: { title: "文档", pageCount: 50 },
|
|
76
|
+
},
|
|
77
|
+
autoChunk: true,
|
|
78
|
+
chunkSize: 1000,
|
|
79
|
+
extractMetadata: true,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// 记忆图片(带OCR)
|
|
83
|
+
await am.rememberDocument({
|
|
84
|
+
document: {
|
|
85
|
+
id: "img_001",
|
|
86
|
+
type: "image",
|
|
87
|
+
text: "图片描述",
|
|
88
|
+
extractedText: "OCR提取的文字",
|
|
89
|
+
imageUrl: "https://example.com/image.png",
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
详细文档请参考 [docs/DOCUMENT_MEMORY.md](./docs/DOCUMENT_MEMORY.md)
|
|
95
|
+
|
|
96
|
+
## 配置
|
|
97
|
+
|
|
98
|
+
创建 `agent-memory.yaml`:
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
store:
|
|
102
|
+
mem0:
|
|
103
|
+
mode: in_memory # 或 platform
|
|
104
|
+
|
|
105
|
+
persistence:
|
|
106
|
+
sqlite:
|
|
107
|
+
path: ./data/memory.db
|
|
108
|
+
|
|
109
|
+
embedding:
|
|
110
|
+
provider: ollama
|
|
111
|
+
model: embedding-gemma:latest
|
|
112
|
+
|
|
113
|
+
memory:
|
|
114
|
+
gate:
|
|
115
|
+
enabled: true
|
|
116
|
+
redact:
|
|
117
|
+
enabled: true
|
|
118
|
+
dedupe:
|
|
119
|
+
enabled: true
|
|
120
|
+
similarity_threshold: 0.92
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 两种运行模式
|
|
124
|
+
|
|
125
|
+
### 1. Platform 模式(Mem0 Platform API)
|
|
126
|
+
|
|
127
|
+
使用 Mem0 Platform 作为后端:
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
store:
|
|
131
|
+
mem0:
|
|
132
|
+
mode: platform
|
|
133
|
+
api_key: ${MEM0_API_KEY}
|
|
134
|
+
base_url: https://api.mem0.ai
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 2. In-Memory 模式(本地SQLite + 向量索引)
|
|
138
|
+
|
|
139
|
+
完全本地运行,使用 SQLite 存储和内存向量索引:
|
|
140
|
+
|
|
141
|
+
```yaml
|
|
142
|
+
store:
|
|
143
|
+
mem0:
|
|
144
|
+
mode: in_memory
|
|
145
|
+
|
|
146
|
+
persistence:
|
|
147
|
+
sqlite:
|
|
148
|
+
path: ./data/memory.db
|
|
149
|
+
|
|
150
|
+
embedding:
|
|
151
|
+
provider: ollama
|
|
152
|
+
model: embedding-gemma:latest
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## API
|
|
156
|
+
|
|
157
|
+
### remember()
|
|
158
|
+
|
|
159
|
+
记忆对话或文本:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
await am.remember({
|
|
163
|
+
messages: [{ role: "user", content: "..." }],
|
|
164
|
+
// 或
|
|
165
|
+
text: "...",
|
|
166
|
+
actor: { id: "U123", type: "user" },
|
|
167
|
+
scope: { projectId: "bds" },
|
|
168
|
+
hint: { types: ["policy", "episodic"] },
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### rememberDocument()
|
|
173
|
+
|
|
174
|
+
记忆文档(支持多模态):
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
await am.rememberDocument({
|
|
178
|
+
document: DocumentChunk | DocumentChunk[],
|
|
179
|
+
actor?: Actor,
|
|
180
|
+
scope?: Scope,
|
|
181
|
+
autoChunk?: boolean,
|
|
182
|
+
chunkSize?: number,
|
|
183
|
+
extractMetadata?: boolean,
|
|
184
|
+
tags?: string[],
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### recall()
|
|
189
|
+
|
|
190
|
+
召回记忆和文档:
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
const result = await am.recall({
|
|
194
|
+
query: "发布流程是什么?",
|
|
195
|
+
actor: { id: "U123", type: "user" },
|
|
196
|
+
scope: { projectId: "bds" },
|
|
197
|
+
topK: 10,
|
|
198
|
+
includeMemory: true,
|
|
199
|
+
includeDocs: true,
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## 项目结构
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
src/
|
|
207
|
+
├── core/ # 核心类
|
|
208
|
+
│ └── agent-memory.ts # 主类
|
|
209
|
+
├── adapters/ # 适配器(Mem0, RAG HTTP)
|
|
210
|
+
├── storage/
|
|
211
|
+
│ ├── persistence/ # SQLite持久化
|
|
212
|
+
│ └── indexing/ # In-Memory向量索引
|
|
213
|
+
├── processing/
|
|
214
|
+
│ ├── gate/ # MemoryGate
|
|
215
|
+
│ ├── embedding/ # Embedding计算
|
|
216
|
+
│ ├── recall/ # 召回引擎
|
|
217
|
+
│ ├── ranker/ # 排序器
|
|
218
|
+
│ ├── context/ # Context构建
|
|
219
|
+
│ └── document/ # 文档处理
|
|
220
|
+
├── boot/ # 启动回灌
|
|
221
|
+
├── config/ # 配置加载
|
|
222
|
+
├── types/ # 类型定义
|
|
223
|
+
└── cli/ # Chat Console
|
|
224
|
+
|
|
225
|
+
test-configs/ # 测试配置文件
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**代码规范**:
|
|
229
|
+
- ✅ 所有文件不超过 500 行
|
|
230
|
+
- ✅ 文件命名使用 kebab-case
|
|
231
|
+
- ✅ 清晰的模块职责分离
|
|
232
|
+
|
|
233
|
+
详细结构说明请参考 [PROJECT_STRUCTURE.md](./PROJECT_STRUCTURE.md)
|
|
234
|
+
|
|
235
|
+
## 开发
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# 安装依赖
|
|
239
|
+
npm install
|
|
240
|
+
|
|
241
|
+
# 构建
|
|
242
|
+
npm run build
|
|
243
|
+
|
|
244
|
+
# 测试
|
|
245
|
+
npm test
|
|
246
|
+
|
|
247
|
+
# Chat Console
|
|
248
|
+
npm run chat
|
|
249
|
+
npm run chat:split
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## 示例
|
|
253
|
+
|
|
254
|
+
- `examples/basic-usage.ts` - 基本用法
|
|
255
|
+
- `examples/document-memory.ts` - 文档记忆示例
|
|
256
|
+
- `examples/chat-example.ts` - Chat Console 示例
|
|
257
|
+
|
|
258
|
+
## License
|
|
259
|
+
|
|
260
|
+
MIT
|
package/bin/chat
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Chat Console entry point
|
|
5
|
+
* Usage: node bin/chat [config-path]
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const path = require("path");
|
|
9
|
+
const chatModule = require(path.join(__dirname, "../dist/cli/chat.js"));
|
|
10
|
+
|
|
11
|
+
// The main function is already called in chat.ts when executed directly
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter factory
|
|
3
|
+
*/
|
|
4
|
+
import { MemoryStore, DocRetriever } from "./types";
|
|
5
|
+
import { Config } from "../types/config";
|
|
6
|
+
export declare function createMemoryStore(config: Config): MemoryStore;
|
|
7
|
+
export declare function createDocRetriever(config: Config): DocRetriever | null;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAO7D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAWtE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adapter factory
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createMemoryStore = createMemoryStore;
|
|
7
|
+
exports.createDocRetriever = createDocRetriever;
|
|
8
|
+
const mem0_store_1 = require("./mem0/mem0-store");
|
|
9
|
+
const rag_http_retriever_1 = require("./rag-http/rag-http-retriever");
|
|
10
|
+
function createMemoryStore(config) {
|
|
11
|
+
switch (config.store.provider) {
|
|
12
|
+
case "mem0":
|
|
13
|
+
return new mem0_store_1.Mem0Store(config);
|
|
14
|
+
default:
|
|
15
|
+
throw new Error(`Unsupported memory store provider: ${config.store.provider}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function createDocRetriever(config) {
|
|
19
|
+
if (!config.docs?.enabled) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
switch (config.docs.retriever) {
|
|
23
|
+
case "rag_http":
|
|
24
|
+
return new rag_http_retriever_1.RagHttpRetriever(config);
|
|
25
|
+
default:
|
|
26
|
+
throw new Error(`Unsupported doc retriever: ${config.docs.retriever}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,8CAOC;AAED,gDAWC;AAvBD,kDAA8C;AAC9C,sEAAiE;AAEjE,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,QAAQ,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,KAAK,MAAM;YACT,OAAO,IAAI,sBAAS,CAAC,MAAM,CAAC,CAAC;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,KAAK,UAAU;YACb,OAAO,IAAI,qCAAgB,CAAC,MAAM,CAAC,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mem0 Platform Store Adapter
|
|
3
|
+
*/
|
|
4
|
+
import { MemoryStore } from "../types";
|
|
5
|
+
import { MemoryItem, Actor, Scope } from "../../types";
|
|
6
|
+
import { Config } from "../../types/config";
|
|
7
|
+
export declare class Mem0Store implements MemoryStore {
|
|
8
|
+
private apiKey;
|
|
9
|
+
private baseUrl;
|
|
10
|
+
private namespaceConfig?;
|
|
11
|
+
constructor(config: Config);
|
|
12
|
+
/**
|
|
13
|
+
* Build namespace from scope and actor
|
|
14
|
+
*/
|
|
15
|
+
private buildNamespace;
|
|
16
|
+
add(items: MemoryItem[], opts: {
|
|
17
|
+
actor?: Actor;
|
|
18
|
+
scope?: Scope;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
search(query: string, opts: {
|
|
21
|
+
actor?: Actor;
|
|
22
|
+
scope?: Scope;
|
|
23
|
+
topK?: number;
|
|
24
|
+
filters?: any;
|
|
25
|
+
}): Promise<MemoryItem[]>;
|
|
26
|
+
delete(id: string): Promise<void>;
|
|
27
|
+
updateUtility(id: string, delta: number): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=mem0-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mem0-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/mem0/mem0-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,SAAU,YAAW,WAAW;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAItB;gBAEU,MAAM,EAAE,MAAM;IAU1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAyChB,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD/E,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAA;KAAE,GACnE,OAAO,CAAC,UAAU,EAAE,CAAC;IAkDlB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9D"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mem0 Platform Store Adapter
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Mem0Store = void 0;
|
|
7
|
+
class Mem0Store {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
const mem0Config = config.store.mem0;
|
|
10
|
+
if (!mem0Config.api_key) {
|
|
11
|
+
throw new Error("Mem0 API key is required for platform mode");
|
|
12
|
+
}
|
|
13
|
+
this.apiKey = mem0Config.api_key;
|
|
14
|
+
this.baseUrl = mem0Config.base_url || "https://api.mem0.ai";
|
|
15
|
+
this.namespaceConfig = mem0Config.namespace;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build namespace from scope and actor
|
|
19
|
+
*/
|
|
20
|
+
buildNamespace(actor, scope) {
|
|
21
|
+
const namespace = {};
|
|
22
|
+
if (this.namespaceConfig) {
|
|
23
|
+
if (this.namespaceConfig.project_from && scope?.projectId) {
|
|
24
|
+
namespace.project = scope.projectId;
|
|
25
|
+
}
|
|
26
|
+
if (this.namespaceConfig.run_from) {
|
|
27
|
+
// Support patterns like "scope.channelId:scope.threadId"
|
|
28
|
+
const parts = this.namespaceConfig.run_from.split(":");
|
|
29
|
+
const runParts = [];
|
|
30
|
+
for (const part of parts) {
|
|
31
|
+
if (part.startsWith("scope.")) {
|
|
32
|
+
const key = part.replace("scope.", "");
|
|
33
|
+
if (scope?.[key]) {
|
|
34
|
+
runParts.push(scope[key]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (runParts.length > 0) {
|
|
39
|
+
namespace.run = runParts.join(":");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (this.namespaceConfig.user_from && actor?.id) {
|
|
43
|
+
// Support patterns like "actor.id"
|
|
44
|
+
if (this.namespaceConfig.user_from.startsWith("actor.")) {
|
|
45
|
+
const key = this.namespaceConfig.user_from.replace("actor.", "");
|
|
46
|
+
if (actor[key]) {
|
|
47
|
+
namespace.user = String(actor[key]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
namespace.user = actor.id;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return namespace;
|
|
56
|
+
}
|
|
57
|
+
async add(items, opts) {
|
|
58
|
+
const namespace = this.buildNamespace(opts.actor, opts.scope);
|
|
59
|
+
for (const item of items) {
|
|
60
|
+
try {
|
|
61
|
+
const response = await fetch(`${this.baseUrl}/v1/memories`, {
|
|
62
|
+
method: "POST",
|
|
63
|
+
headers: {
|
|
64
|
+
"Authorization": `Bearer ${this.apiKey}`,
|
|
65
|
+
"Content-Type": "application/json",
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify({
|
|
68
|
+
messages: [
|
|
69
|
+
{
|
|
70
|
+
role: "user",
|
|
71
|
+
content: item.content,
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
agent_id: namespace.user || "default",
|
|
75
|
+
user_id: namespace.user || "default",
|
|
76
|
+
metadata: {
|
|
77
|
+
type: item.type,
|
|
78
|
+
tags: item.tags || [],
|
|
79
|
+
confidence: item.confidence,
|
|
80
|
+
utility: item.utility,
|
|
81
|
+
source: item.source,
|
|
82
|
+
scope: opts.scope,
|
|
83
|
+
...namespace,
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
86
|
+
});
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
const error = await response.text();
|
|
89
|
+
throw new Error(`Mem0 API error: ${response.status} ${error}`);
|
|
90
|
+
}
|
|
91
|
+
const result = await response.json();
|
|
92
|
+
// Update item.id with the returned memory ID if available
|
|
93
|
+
if (result.id) {
|
|
94
|
+
item.id = result.id;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error(`Failed to add memory item: ${item.content.substring(0, 50)}...`, error);
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async search(query, opts) {
|
|
104
|
+
const namespace = this.buildNamespace(opts.actor, opts.scope);
|
|
105
|
+
const topK = opts.topK || 10;
|
|
106
|
+
try {
|
|
107
|
+
const response = await fetch(`${this.baseUrl}/v1/memories/search`, {
|
|
108
|
+
method: "POST",
|
|
109
|
+
headers: {
|
|
110
|
+
"Authorization": `Bearer ${this.apiKey}`,
|
|
111
|
+
"Content-Type": "application/json",
|
|
112
|
+
},
|
|
113
|
+
body: JSON.stringify({
|
|
114
|
+
query,
|
|
115
|
+
agent_id: namespace.user || "default",
|
|
116
|
+
user_id: namespace.user || "default",
|
|
117
|
+
limit: topK,
|
|
118
|
+
metadata: {
|
|
119
|
+
...namespace,
|
|
120
|
+
...opts.filters,
|
|
121
|
+
},
|
|
122
|
+
}),
|
|
123
|
+
});
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
const error = await response.text();
|
|
126
|
+
throw new Error(`Mem0 API error: ${response.status} ${error}`);
|
|
127
|
+
}
|
|
128
|
+
const result = await response.json();
|
|
129
|
+
// Transform Mem0 response to MemoryItem[]
|
|
130
|
+
return (result.results || []).map((mem) => ({
|
|
131
|
+
id: mem.id || mem.memory_id || String(Date.now()),
|
|
132
|
+
type: (mem.metadata?.type || "episodic"),
|
|
133
|
+
content: mem.memory || mem.content || "",
|
|
134
|
+
actor: opts.actor,
|
|
135
|
+
scope: opts.scope,
|
|
136
|
+
tags: mem.metadata?.tags || [],
|
|
137
|
+
confidence: mem.score || mem.metadata?.confidence,
|
|
138
|
+
utility: mem.metadata?.utility,
|
|
139
|
+
source: mem.metadata?.source,
|
|
140
|
+
createdAt: mem.created_at || new Date().toISOString(),
|
|
141
|
+
updatedAt: mem.updated_at,
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.error("Failed to search memories:", error);
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async delete(id) {
|
|
150
|
+
try {
|
|
151
|
+
const response = await fetch(`${this.baseUrl}/v1/memories/${id}`, {
|
|
152
|
+
method: "DELETE",
|
|
153
|
+
headers: {
|
|
154
|
+
"Authorization": `Bearer ${this.apiKey}`,
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
if (!response.ok) {
|
|
158
|
+
const error = await response.text();
|
|
159
|
+
throw new Error(`Mem0 API error: ${response.status} ${error}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error(`Failed to delete memory ${id}:`, error);
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async updateUtility(id, delta) {
|
|
168
|
+
// Mem0 may not support utility updates directly
|
|
169
|
+
// This could be implemented via metadata updates if supported
|
|
170
|
+
console.warn("updateUtility not fully implemented for Mem0Store");
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.Mem0Store = Mem0Store;
|
|
174
|
+
//# sourceMappingURL=mem0-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mem0-store.js","sourceRoot":"","sources":["../../../src/adapters/mem0/mem0-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG HTTP Retriever Adapter
|
|
3
|
+
*/
|
|
4
|
+
import { DocRetriever } from "../types";
|
|
5
|
+
import { DocChunk, Scope } from "../../types";
|
|
6
|
+
import { Config } from "../../types/config";
|
|
7
|
+
export declare class RagHttpRetriever implements DocRetriever {
|
|
8
|
+
private baseUrl;
|
|
9
|
+
private searchEndpoint;
|
|
10
|
+
private timeoutMs;
|
|
11
|
+
private defaultTopK;
|
|
12
|
+
constructor(config: Config);
|
|
13
|
+
search(query: string, opts: {
|
|
14
|
+
scope?: Scope;
|
|
15
|
+
topK?: number;
|
|
16
|
+
}): Promise<DocChunk[]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=rag-http-retriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-http-retriever.d.ts","sourceRoot":"","sources":["../../../src/adapters/rag-http/rag-http-retriever.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,MAAM;IAepB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAsDzF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RAG HTTP Retriever Adapter
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RagHttpRetriever = void 0;
|
|
7
|
+
class RagHttpRetriever {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
if (!config.docs?.enabled) {
|
|
10
|
+
throw new Error("docs.enabled must be true to use RagHttpRetriever");
|
|
11
|
+
}
|
|
12
|
+
const ragConfig = config.docs.rag_http;
|
|
13
|
+
if (!ragConfig) {
|
|
14
|
+
throw new Error("rag_http configuration is required when docs.enabled is true");
|
|
15
|
+
}
|
|
16
|
+
this.baseUrl = ragConfig.base_url;
|
|
17
|
+
this.searchEndpoint = ragConfig.endpoints?.search || "/search";
|
|
18
|
+
this.timeoutMs = ragConfig.timeout_ms || 8000;
|
|
19
|
+
this.defaultTopK = ragConfig.top_k || 6;
|
|
20
|
+
}
|
|
21
|
+
async search(query, opts) {
|
|
22
|
+
const topK = opts.topK || this.defaultTopK;
|
|
23
|
+
try {
|
|
24
|
+
const controller = new AbortController();
|
|
25
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
26
|
+
const response = await fetch(`${this.baseUrl}${this.searchEndpoint}`, {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: {
|
|
29
|
+
"Content-Type": "application/json",
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
query,
|
|
33
|
+
topK,
|
|
34
|
+
scope: opts.scope,
|
|
35
|
+
}),
|
|
36
|
+
signal: controller.signal,
|
|
37
|
+
});
|
|
38
|
+
clearTimeout(timeoutId);
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const error = await response.text();
|
|
41
|
+
throw new Error(`RAG HTTP error: ${response.status} ${error}`);
|
|
42
|
+
}
|
|
43
|
+
const result = await response.json();
|
|
44
|
+
// Transform response to DocChunk[]
|
|
45
|
+
// Expected format: { chunks: DocChunk[] } or DocChunk[]
|
|
46
|
+
const chunks = result.chunks || result || [];
|
|
47
|
+
return chunks.map((chunk, index) => ({
|
|
48
|
+
id: chunk.id || `doc_${Date.now()}_${index}`,
|
|
49
|
+
text: chunk.text || chunk.content || "",
|
|
50
|
+
score: chunk.score || chunk.similarity,
|
|
51
|
+
source: chunk.source || {
|
|
52
|
+
title: chunk.title,
|
|
53
|
+
url: chunk.url,
|
|
54
|
+
path: chunk.path,
|
|
55
|
+
page: chunk.page,
|
|
56
|
+
section: chunk.section,
|
|
57
|
+
},
|
|
58
|
+
citations: chunk.citations,
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
63
|
+
throw new Error(`RAG HTTP request timeout after ${this.timeoutMs}ms`);
|
|
64
|
+
}
|
|
65
|
+
console.error("Failed to search documents:", error);
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.RagHttpRetriever = RagHttpRetriever;
|
|
71
|
+
//# sourceMappingURL=rag-http-retriever.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-http-retriever.js","sourceRoot":"","sources":["../../../src/adapters/rag-http/rag-http-retriever.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter interfaces
|
|
3
|
+
*/
|
|
4
|
+
import { MemoryItem, DocChunk, Actor, Scope } from "../types";
|
|
5
|
+
export interface MemoryStore {
|
|
6
|
+
add(items: MemoryItem[], opts: {
|
|
7
|
+
actor?: Actor;
|
|
8
|
+
scope?: Scope;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
search(query: string, opts: {
|
|
11
|
+
actor?: Actor;
|
|
12
|
+
scope?: Scope;
|
|
13
|
+
topK?: number;
|
|
14
|
+
filters?: any;
|
|
15
|
+
}): Promise<MemoryItem[]>;
|
|
16
|
+
delete?(id: string): Promise<void>;
|
|
17
|
+
updateUtility?(id: string, delta: number): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export interface DocRetriever {
|
|
20
|
+
search(query: string, opts: {
|
|
21
|
+
scope?: Scope;
|
|
22
|
+
topK?: number;
|
|
23
|
+
}): Promise<DocChunk[]>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACnH,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,aAAa,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CACpF"}
|