@easynet/agent-memory 1.0.1 → 1.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 +97 -87
- package/dist/src/create-agent-memory.d.ts +28 -13
- package/dist/src/create-agent-memory.d.ts.map +1 -1
- package/dist/src/create-agent-memory.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/ingest/common-ingest.d.ts +14 -0
- package/dist/src/ingest/common-ingest.d.ts.map +1 -0
- package/dist/src/ingest/common-ingest.js +30 -0
- package/dist/src/ingest/common-ingest.js.map +1 -0
- package/dist/src/ingest/pdf-ingest.d.ts +0 -13
- package/dist/src/ingest/pdf-ingest.d.ts.map +1 -1
- package/dist/src/ingest/pdf-ingest.js +13 -81
- package/dist/src/ingest/pdf-ingest.js.map +1 -1
- package/dist/src/ingest/url-ingest.d.ts +0 -12
- package/dist/src/ingest/url-ingest.d.ts.map +1 -1
- package/dist/src/ingest/url-ingest.js +15 -294
- package/dist/src/ingest/url-ingest.js.map +1 -1
- package/dist/src/providers/in-memory-store.d.ts +4 -3
- package/dist/src/providers/in-memory-store.d.ts.map +1 -1
- package/dist/src/providers/in-memory-store.js +36 -21
- package/dist/src/providers/in-memory-store.js.map +1 -1
- package/dist/src/providers/mem0-provider.d.ts +6 -5
- package/dist/src/providers/mem0-provider.d.ts.map +1 -1
- package/dist/src/providers/mem0-provider.js +61 -51
- package/dist/src/providers/mem0-provider.js.map +1 -1
- package/package.json +8 -7
package/README.md
CHANGED
|
@@ -1,125 +1,135 @@
|
|
|
1
|
-
# agent-memory
|
|
1
|
+
# @easynet/agent-memory
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
面向 Agent 的轻量记忆包。
|
|
4
|
+
默认只需要 1 个入口函数:`createAgentMemory()`。
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
## 最小接口
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
**Three memory types:**
|
|
10
|
-
|
|
11
|
-
| type | Description | Usage |
|
|
12
|
-
|------|-------------|-------|
|
|
13
|
-
| `thread` | Current session | This session only |
|
|
14
|
-
| `cross_thread` | Cross-session | Cross-session preferences/settings |
|
|
15
|
-
| `knowledge` | Docs/RAG | Documents or `memorize({ url })` |
|
|
8
|
+
```ts
|
|
9
|
+
import { createAgentMemory } from "@easynet/agent-memory";
|
|
16
10
|
|
|
17
|
-
|
|
11
|
+
const memory = await createAgentMemory();
|
|
18
12
|
|
|
19
|
-
|
|
13
|
+
// 写入:memorize
|
|
14
|
+
await memory.memorize({
|
|
15
|
+
namespace: "user:alice",
|
|
16
|
+
type: "cross_thread",
|
|
17
|
+
content: "用户偏好中文回答,尽量简洁。",
|
|
18
|
+
});
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
// 检索:recall
|
|
21
|
+
const { injectedText } = await memory.recall({
|
|
22
|
+
namespace: "user:alice",
|
|
23
|
+
query: "用户偏好",
|
|
24
|
+
topK: 5,
|
|
25
|
+
});
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
pnpm install && pnpm run build
|
|
25
|
-
# SQLite persistence: pnpm add better-sqlite3
|
|
27
|
+
console.log(injectedText);
|
|
26
28
|
```
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
可选能力:
|
|
31
|
+
- `memorize({ url })`:直接摄入本地/远程 PDF、txt、HTML、图片(写入 `knowledge`)
|
|
32
|
+
- `retrieveContextForLangChain` / `writeMemoryForLangChain`:LangChain 快捷接入
|
|
29
33
|
|
|
30
|
-
##
|
|
34
|
+
## 最简单示例(带详细注释)
|
|
31
35
|
|
|
32
36
|
```ts
|
|
33
37
|
import { createAgentMemory } from "@easynet/agent-memory";
|
|
34
38
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const
|
|
39
|
+
async function main() {
|
|
40
|
+
// 1) 创建 memory 实例:
|
|
41
|
+
// - 不传参数时,会尝试读取 ./config/agent-memory.yaml
|
|
42
|
+
// - 如果文件不存在,自动退回内存版 in_memory provider
|
|
43
|
+
const memory = await createAgentMemory();
|
|
44
|
+
|
|
45
|
+
// 2) 写入长期偏好(cross_thread):
|
|
46
|
+
// namespace 是逻辑隔离维度,建议固定命名规范(如 user:{id})
|
|
47
|
+
await memory.memorize({
|
|
48
|
+
namespace: "user:alice",
|
|
49
|
+
type: "cross_thread",
|
|
50
|
+
content: "用户希望所有输出优先中文。",
|
|
51
|
+
metadata: {
|
|
52
|
+
source: "chat",
|
|
53
|
+
tags: ["preference", "language"],
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// 3) 写入知识(knowledge):
|
|
58
|
+
await memory.memorize({
|
|
59
|
+
namespace: "project:demo",
|
|
60
|
+
type: "knowledge",
|
|
61
|
+
content: "Demo API 统一使用 Bearer Token 鉴权。",
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// 4) 检索上下文:
|
|
65
|
+
// recall 会返回可直接拼进 prompt 的 injectedText
|
|
66
|
+
const result = await memory.recall({
|
|
67
|
+
namespace: "project:demo",
|
|
68
|
+
query: "这个项目如何鉴权?",
|
|
69
|
+
topK: 3,
|
|
70
|
+
budgetTokens: 400,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
console.log("traceId:", result.traceId);
|
|
74
|
+
console.log("context:\\n", result.injectedText);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
main().catch(console.error);
|
|
40
78
|
```
|
|
41
79
|
|
|
42
|
-
|
|
80
|
+
## 最简单 YAML(推荐先用这个)
|
|
43
81
|
|
|
44
|
-
|
|
45
|
-
import { createAgentMemory } from "@easynet/agent-memory";
|
|
46
|
-
const memory = await createAgentMemory();
|
|
47
|
-
await memory.memorize({ url: "./doc.pdf", namespace: "project:docs" });
|
|
48
|
-
await memory.memorize({ url: "https://example.com/page.html", namespace: "project:docs" });
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**LangChain Agent** (inject memory before calling LLM; write memory after each turn):
|
|
82
|
+
`config/agent-memory.yaml`
|
|
52
83
|
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const { injectedText } = await retrieveContextForLangChain(memory, { namespace: ns, query: "preferences and settings", topK: 8 });
|
|
59
|
-
// After each turn/tool: write long-term memory
|
|
60
|
-
await writeMemoryForLangChain(memory, { namespace: ns, type: "cross_thread", content: "User prefers Chinese and concise replies." });
|
|
61
|
-
```
|
|
84
|
+
```yaml
|
|
85
|
+
# 最小配置:单一 in_memory provider(进程内存,重启后数据丢失)
|
|
86
|
+
providers:
|
|
87
|
+
- id: default
|
|
88
|
+
type: in_memory
|
|
62
89
|
|
|
63
|
-
|
|
90
|
+
router:
|
|
91
|
+
# 所有读写都走 default provider
|
|
92
|
+
defaultProvider: default
|
|
93
|
+
rules: []
|
|
64
94
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const agent = createDeepAgent({
|
|
71
|
-
store,
|
|
72
|
-
backend: (c) => new CompositeBackend(new StateBackend(c), { "/memories/": new StoreBackend(c) }),
|
|
73
|
-
systemPrompt: "When users state preferences, save to /memories/user_preferences.txt",
|
|
74
|
-
});
|
|
75
|
-
```
|
|
95
|
+
policy:
|
|
96
|
+
# 允许写入三类记忆
|
|
97
|
+
allowedWriteTypes: [thread, cross_thread, knowledge]
|
|
98
|
+
# 单类型最多保留多少条(超过后由策略裁剪)
|
|
99
|
+
maxItemsPerType: 20
|
|
76
100
|
|
|
77
|
-
|
|
101
|
+
observability:
|
|
102
|
+
# 是否记录 recall trace(建议开发期开,生产按需)
|
|
103
|
+
trace: false
|
|
78
104
|
|
|
79
|
-
|
|
105
|
+
privacy:
|
|
106
|
+
# 写入前移除敏感 metadata 字段
|
|
107
|
+
forbiddenMetadataKeys: [password, api_key, secret, token]
|
|
108
|
+
```
|
|
80
109
|
|
|
81
|
-
|
|
110
|
+
## SQLite YAML(本地持久化)
|
|
82
111
|
|
|
83
112
|
```yaml
|
|
84
113
|
providers:
|
|
85
114
|
- id: default
|
|
86
115
|
type: sqlite
|
|
87
116
|
options:
|
|
117
|
+
# SQLite 文件路径;相对路径以该 YAML 所在目录为基准
|
|
88
118
|
dbPath: ./data/agent-memory.db
|
|
89
|
-
|
|
90
|
-
type: rag
|
|
91
|
-
- id: mem0
|
|
92
|
-
type: mem0
|
|
119
|
+
|
|
93
120
|
router:
|
|
94
121
|
defaultProvider: default
|
|
95
|
-
rules:
|
|
96
|
-
|
|
97
|
-
providerId: rag
|
|
98
|
-
- types: [cross_thread]
|
|
99
|
-
providerId: mem0
|
|
122
|
+
rules: []
|
|
123
|
+
|
|
100
124
|
policy:
|
|
101
125
|
allowedWriteTypes: [thread, cross_thread, knowledge]
|
|
102
|
-
maxItemsPerType:
|
|
126
|
+
maxItemsPerType: 50
|
|
127
|
+
|
|
103
128
|
observability:
|
|
104
129
|
trace: true
|
|
105
|
-
privacy:
|
|
106
|
-
forbiddenMetadataKeys: [password, api_key, secret, token]
|
|
107
|
-
redactSecrets: false
|
|
108
|
-
vlm:
|
|
109
|
-
captionUrl: http://localhost:8000/caption
|
|
110
|
-
captionPrompt: "Extract key information from the image..."
|
|
111
|
-
timeoutMs: 30000
|
|
112
130
|
```
|
|
113
131
|
|
|
114
|
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
**Trace / Privacy:** `recall()` returns `traceId`; configurable TraceRecorder and PrivacyGuard.
|
|
122
|
-
|
|
123
|
-
**Layout:** 根目录主包(src/、test/、docs/、examples/)· `examples/pdf-text-rag` · `examples/deepagents-memory`
|
|
124
|
-
|
|
125
|
-
**License:** MIT
|
|
132
|
+
依赖说明:
|
|
133
|
+
- `type: sqlite` 需要安装 `better-sqlite3`
|
|
134
|
+
- URL 摄入 PDF 需要安装 `pdf-parse`
|
|
135
|
+
- `type: mem0` 需要安装 `mem0ai`
|
|
@@ -6,32 +6,47 @@ import { type AgentMemoryConfig } from "./core/config.js";
|
|
|
6
6
|
import type { MemoryItem, MemoryWriteRequest } from "./core/types.js";
|
|
7
7
|
import type { AgentMemory, ClassifyMemoryFn } from "./core/agent-memory.js";
|
|
8
8
|
import { type Mem0MemoryLike } from "./providers/mem0-provider.js";
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Minimal write input for end users.
|
|
11
|
+
* - Use `content` for normal memory writes.
|
|
12
|
+
* - Use `url` for one-shot ingest (PDF/txt/HTML/image) into `knowledge`.
|
|
13
|
+
*/
|
|
14
|
+
export type MemoryWriteInput = Omit<MemoryWriteRequest, "content" | "type"> & {
|
|
11
15
|
content?: string;
|
|
12
16
|
type?: MemoryWriteRequest["type"];
|
|
13
17
|
/** Local path or remote URL; format detected and ingested as knowledge. */
|
|
14
18
|
url?: string;
|
|
15
19
|
};
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Minimal create options for end users.
|
|
22
|
+
*/
|
|
23
|
+
export interface CreateMemoryOptions {
|
|
24
|
+
/** YAML path. Default: `config/agent-memory.yaml` from current working directory. */
|
|
18
25
|
configPath?: string;
|
|
19
|
-
/**
|
|
26
|
+
/** Inline config object. When present, `configPath` is ignored. */
|
|
20
27
|
config?: AgentMemoryConfig;
|
|
21
|
-
/**
|
|
28
|
+
/** Runtime provider overrides (currently for mem0 instance injection). */
|
|
22
29
|
overrides?: {
|
|
23
30
|
mem0?: Mem0MemoryLike;
|
|
24
31
|
};
|
|
25
|
-
/**
|
|
32
|
+
/** Called when `type` is omitted. If not provided, defaults to `cross_thread`. */
|
|
26
33
|
classifyMemory?: ClassifyMemoryFn;
|
|
27
|
-
/**
|
|
34
|
+
/** Optional image captioner for URL ingest. */
|
|
28
35
|
captionFn?: (buffer: Buffer) => Promise<string>;
|
|
29
36
|
}
|
|
30
|
-
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Minimal memory client returned by `createAgentMemory`.
|
|
39
|
+
*/
|
|
40
|
+
export interface AgentMemoryClient extends Omit<AgentMemory, "memorize" | "write"> {
|
|
41
|
+
/** Unified write API: accepts plain content writes and URL ingest. */
|
|
42
|
+
memorize(req: MemoryWriteInput): Promise<MemoryItem>;
|
|
43
|
+
/** Alias of `memorize` for compatibility with existing code. */
|
|
44
|
+
write(req: MemoryWriteInput): Promise<MemoryItem>;
|
|
34
45
|
}
|
|
46
|
+
/** Backward-compatible aliases for existing users. */
|
|
47
|
+
export type MemorizeRequestWithIngest = MemoryWriteInput;
|
|
48
|
+
export type CreateAgentMemoryOptions = CreateMemoryOptions;
|
|
49
|
+
export type CreateAgentMemoryResult = AgentMemoryClient;
|
|
35
50
|
/**
|
|
36
51
|
* Create AgentMemory from YAML or default config.
|
|
37
52
|
*
|
|
@@ -43,5 +58,5 @@ export interface CreateAgentMemoryResult extends Omit<AgentMemory, "memorize" |
|
|
|
43
58
|
* const mem0 = new Memory({ ... });
|
|
44
59
|
* const memory = await createAgentMemory({ configPath: "config/agent-memory.yaml", overrides: { mem0 } });
|
|
45
60
|
*/
|
|
46
|
-
export declare function createAgentMemory(options?:
|
|
61
|
+
export declare function createAgentMemory(options?: CreateMemoryOptions | string): Promise<AgentMemoryClient>;
|
|
47
62
|
//# sourceMappingURL=create-agent-memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-agent-memory.d.ts","sourceRoot":"","sources":["../../src/create-agent-memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAkB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ5E,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKjF
|
|
1
|
+
{"version":3,"file":"create-agent-memory.d.ts","sourceRoot":"","sources":["../../src/create-agent-memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAkB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ5E,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKjF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,0EAA0E;IAC1E,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,cAAc,CAAC;KACvB,CAAC;IACF,kFAAkF;IAClF,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC;IAChF,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,gEAAgE;IAChE,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnD;AAED,sDAAsD;AACtD,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AACzD,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAC3D,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAIxD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,mBAAmB,GAAG,MAAW,GACzC,OAAO,CAAC,iBAAiB,CAAC,CA0H5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-agent-memory.js","sourceRoot":"","sources":["../../src/create-agent-memory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA+
|
|
1
|
+
{"version":3,"file":"create-agent-memory.js","sourceRoot":"","sources":["../../src/create-agent-memory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA+EH,8CA4HC;AAzMD,gDAG0B;AAE1B,4DAAyE;AAEzE,8DAAgE;AAChE,gDAAgD;AAChD,gDAAgD;AAChD,kDAAiD;AACjD,uEAAuE;AACvE,iEAAkE;AAClE,iEAA0D;AAC1D,mEAAiF;AACjF,0DAA2D;AAC3D,yCAAsD;AACtD,+CAAyC;AA+CzC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAEvD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,iBAAiB,CACrC,UAAwC,EAAE;IAE1C,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7E,IAAI,MAAyB,CAAC;IAC9B,qGAAqG;IACrG,IAAI,aAAiC,CAAC;IAEtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC;QAC1D,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC7H,aAAa,GAAG,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,GAAG,MAAM,IAAA,8BAAkB,EAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEtD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3B,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,0CAAqB,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAkE,CAAC;YACxG,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,wBAAwB,CAAC;YAC7D,IAAI,aAAa,IAAI,CAAC,IAAA,sBAAU,EAAC,MAAM,CAAC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAClE,MAAM,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,qCAAmB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC5B,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,6BAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;YAChC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAE/C,CAAC;oBACA,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAA+B,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CACb,kGAAmG,CAAW,EAAE,OAAO,IAAI,EAAE,EAAE,CAChI,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,iIAAiI,CAClI,CAAC;YACJ,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,+BAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC;QAC9B,SAAS,EAAE,WAAW;QACtB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe;QAChD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;KACjC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAC1B,CAAC,CAAC,IAAI,wBAAY,CAAC;YACf,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;YAClD,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe;YAC9C,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;SAC3C,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,wCAAqB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,MAAM,YAAY,GAAG,IAAI,yBAAY,CAAC;QACpC,qBAAqB,EAAE,MAAM,CAAC,OAAO,EAAE,qBAAqB;QAC5D,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa;KAC7C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,6BAAgB,CAAC;QAChC,MAAM;QACN,MAAM;QACN,aAAa;QACb,YAAY;QACZ,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IAEH,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3B,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAqB,EAAuB,EAAE;QAC5E,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,iCAAiB,EAAC,IAAI,EAAE;gBAClD,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,GAAG,CAAC,QAA+C;gBAC7D,SAAS;aACV,CAAC,CAAC;YACH,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,WAAW;gBAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;aACzF,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAA6C,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAsB;QAChC,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACrC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QACvD,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;QAC7C,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;KACpD,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* agent-memory: LangChain-focused runtime helpers.
|
|
3
3
|
* Generic memory provider implementations should live in @easynet/agent-common.
|
|
4
4
|
*/
|
|
5
|
-
export { createAgentMemory, type
|
|
6
|
-
export type {
|
|
5
|
+
export { createAgentMemory, type CreateMemoryOptions, type AgentMemoryClient, type MemoryWriteInput, } from "./create-agent-memory.js";
|
|
6
|
+
export type { MemoryType, MemoryWriteRequest, MemoryQueryRequest, } from "./core/types.js";
|
|
7
7
|
export { retrieveContextForLangChain, writeMemoryForLangChain, type RetrieveForLangChainOptions, type LangChainMemoryLike, } from "./integrations/langchain.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mEAKkC;AAJhC,2HAAA,iBAAiB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mEAKkC;AAJhC,2HAAA,iBAAiB,OAAA;AAUnB,4DAKqC;AAJnC,2HAAA,2BAA2B,OAAA;AAC3B,uHAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AgentMemory } from "../core/agent-memory.js";
|
|
2
|
+
import type { MemoryItem } from "../core/types.js";
|
|
3
|
+
export interface IngestResultLike {
|
|
4
|
+
chunks: Array<{
|
|
5
|
+
content: string;
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
export declare function loadCommonModule(): Promise<Record<string, unknown>>;
|
|
10
|
+
export declare function writeChunksToMemory(memory: AgentMemory, namespace: string, type: "knowledge", chunks: IngestResultLike["chunks"]): Promise<{
|
|
11
|
+
count: number;
|
|
12
|
+
firstItem?: MemoryItem;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=common-ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/common-ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC,CAAC;CACJ;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAKzE;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GACjC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAiBpD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadCommonModule = loadCommonModule;
|
|
4
|
+
exports.writeChunksToMemory = writeChunksToMemory;
|
|
5
|
+
let commonModulePromise;
|
|
6
|
+
async function loadCommonModule() {
|
|
7
|
+
if (!commonModulePromise) {
|
|
8
|
+
commonModulePromise = import("@easynet/agent-common");
|
|
9
|
+
}
|
|
10
|
+
return commonModulePromise;
|
|
11
|
+
}
|
|
12
|
+
async function writeChunksToMemory(memory, namespace, type, chunks) {
|
|
13
|
+
let firstItem;
|
|
14
|
+
let count = 0;
|
|
15
|
+
for (const chunk of chunks) {
|
|
16
|
+
if (!chunk.content.trim())
|
|
17
|
+
continue;
|
|
18
|
+
const item = await memory.memorize({
|
|
19
|
+
namespace,
|
|
20
|
+
type,
|
|
21
|
+
content: chunk.content,
|
|
22
|
+
metadata: chunk.metadata,
|
|
23
|
+
});
|
|
24
|
+
if (!firstItem)
|
|
25
|
+
firstItem = item;
|
|
26
|
+
count += 1;
|
|
27
|
+
}
|
|
28
|
+
return { count, firstItem };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=common-ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-ingest.js","sourceRoot":"","sources":["../../../src/ingest/common-ingest.ts"],"names":[],"mappings":";;AAYA,4CAKC;AAED,kDAsBC;AA/BD,IAAI,mBAAiE,CAAC;AAE/D,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,MAAM,CAAC,uBAAuB,CAAqC,CAAC;IAC5F,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,MAAmB,EACnB,SAAiB,EACjB,IAAiB,EACjB,MAAkC;IAElC,IAAI,SAAiC,CAAC;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,SAAS;QACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACjC,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS;YAAE,SAAS,GAAG,IAAI,CAAC;QACjC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1,25 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ingest PDF from file path or URL into agent-memory.
|
|
3
|
-
* Optional: install pdf-parse to use (e.g. pnpm add pdf-parse).
|
|
4
|
-
*/
|
|
5
1
|
import type { AgentMemory } from "../core/agent-memory.js";
|
|
6
2
|
import type { MemoryItem } from "../core/types.js";
|
|
7
3
|
export interface IngestPdfOptions {
|
|
8
|
-
/** PDF file path (e.g. ./doc.pdf) or URL (e.g. https://example.com/doc.pdf). */
|
|
9
4
|
pdf: string;
|
|
10
|
-
/** Namespace for stored memories (e.g. project:docs). */
|
|
11
5
|
namespace: string;
|
|
12
|
-
/** Memory type for text chunks. Default: knowledge. */
|
|
13
6
|
type?: "knowledge";
|
|
14
|
-
/** Approximate chars per chunk. Default: 800. */
|
|
15
7
|
chunkSize?: number;
|
|
16
|
-
/** Optional metadata for all chunks (e.g. doc_id, source). */
|
|
17
8
|
metadata?: Record<string, unknown>;
|
|
18
9
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Load a PDF from path or URL, extract text, chunk it, and store each chunk
|
|
21
|
-
* into agent-memory with the given namespace and type.
|
|
22
|
-
*/
|
|
23
10
|
export declare function ingestPdfToMemory(memory: AgentMemory, options: IngestPdfOptions): Promise<{
|
|
24
11
|
count: number;
|
|
25
12
|
firstItem?: MemoryItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/pdf-ingest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pdf-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/pdf-ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAsBD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAIpD"}
|
|
@@ -1,89 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Ingest PDF from file path or URL into agent-memory.
|
|
4
|
-
* Optional: install pdf-parse to use (e.g. pnpm add pdf-parse).
|
|
5
|
-
*/
|
|
6
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
3
|
exports.ingestPdfToMemory = ingestPdfToMemory;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const res = await fetch(pdf);
|
|
14
|
-
if (!res.ok)
|
|
15
|
-
throw new Error(`Failed to fetch PDF: ${res.status} ${res.statusText}`);
|
|
16
|
-
const ab = await res.arrayBuffer();
|
|
17
|
-
return Buffer.from(ab);
|
|
18
|
-
}
|
|
19
|
-
const { readFile } = await import("node:fs/promises");
|
|
20
|
-
return readFile(pdf);
|
|
21
|
-
}
|
|
22
|
-
function chunkText(text, chunkSize) {
|
|
23
|
-
const trimmed = text.trim();
|
|
24
|
-
if (!trimmed)
|
|
25
|
-
return [];
|
|
26
|
-
const chunks = [];
|
|
27
|
-
const paragraphs = trimmed.split(/\n\n+/);
|
|
28
|
-
let current = "";
|
|
29
|
-
for (const p of paragraphs) {
|
|
30
|
-
if (current.length + p.length + 2 <= chunkSize) {
|
|
31
|
-
current = current ? `${current}\n\n${p}` : p;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
if (current)
|
|
35
|
-
chunks.push(current);
|
|
36
|
-
if (p.length <= chunkSize) {
|
|
37
|
-
current = p;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
for (let i = 0; i < p.length; i += chunkSize) {
|
|
41
|
-
chunks.push(p.slice(i, i + chunkSize));
|
|
42
|
-
}
|
|
43
|
-
current = "";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
4
|
+
const common_ingest_js_1 = require("./common-ingest.js");
|
|
5
|
+
async function ingestToChunks(options) {
|
|
6
|
+
const common = (await (0, common_ingest_js_1.loadCommonModule)());
|
|
7
|
+
if (typeof common.ingestPdfToChunks !== "function") {
|
|
8
|
+
throw new Error("ingestPdfToMemory requires @easynet/agent-common with ingest exports. Please upgrade @easynet/agent-common.");
|
|
46
9
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
10
|
+
return common.ingestPdfToChunks({
|
|
11
|
+
pdf: options.pdf,
|
|
12
|
+
chunkSize: options.chunkSize,
|
|
13
|
+
metadata: options.metadata,
|
|
14
|
+
});
|
|
50
15
|
}
|
|
51
|
-
async function extractTextFromPdf(buffer) {
|
|
52
|
-
try {
|
|
53
|
-
const pdfParse = (await import("pdf-parse")).default;
|
|
54
|
-
const data = await pdfParse(buffer);
|
|
55
|
-
return typeof data?.text === "string" ? data.text : "";
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
const err = e;
|
|
59
|
-
if (err?.code === "ERR_MODULE_NOT_FOUND" || err?.message?.includes("pdf-parse")) {
|
|
60
|
-
throw new Error("PDF ingestion requires pdf-parse. Install it: pnpm add pdf-parse");
|
|
61
|
-
}
|
|
62
|
-
throw e;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Load a PDF from path or URL, extract text, chunk it, and store each chunk
|
|
67
|
-
* into agent-memory with the given namespace and type.
|
|
68
|
-
*/
|
|
69
16
|
async function ingestPdfToMemory(memory, options) {
|
|
70
|
-
const {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const chunks = chunkText(text, chunkSize);
|
|
74
|
-
let firstItem;
|
|
75
|
-
for (const content of chunks) {
|
|
76
|
-
if (!content.trim())
|
|
77
|
-
continue;
|
|
78
|
-
const item = await memory.memorize({
|
|
79
|
-
namespace,
|
|
80
|
-
type,
|
|
81
|
-
content,
|
|
82
|
-
metadata: { ...metadata, source: "doc" },
|
|
83
|
-
});
|
|
84
|
-
if (!firstItem)
|
|
85
|
-
firstItem = item;
|
|
86
|
-
}
|
|
87
|
-
return { count: chunks.length, firstItem };
|
|
17
|
+
const { namespace, type = "knowledge" } = options;
|
|
18
|
+
const { chunks } = await ingestToChunks(options);
|
|
19
|
+
return (0, common_ingest_js_1.writeChunksToMemory)(memory, namespace, type, chunks);
|
|
88
20
|
}
|
|
89
21
|
//# sourceMappingURL=pdf-ingest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-ingest.js","sourceRoot":"","sources":["../../../src/ingest/pdf-ingest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pdf-ingest.js","sourceRoot":"","sources":["../../../src/ingest/pdf-ingest.ts"],"names":[],"mappings":";;AAgCA,8CAOC;AArCD,yDAAkG;AAUlG,KAAK,UAAU,cAAc,CAAC,OAAyB;IACrD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAA,mCAAgB,GAAE,CAMvC,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,MAAmB,EACnB,OAAyB;IAEzB,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,IAAA,sCAAmB,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,25 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ingest from a single URL: local path (PDF/txt/HTML/image) or remote URL.
|
|
3
|
-
* Format/media detection is for ingest pipeline only—not use-case routing; routing is config-driven.
|
|
4
|
-
* PDF requires pdf-parse; images may use captionFn for caption.
|
|
5
|
-
* Chunking is paragraph-based (semantic); we never store image binaries—only caption + URL.
|
|
6
|
-
*/
|
|
7
1
|
import type { AgentMemory } from "../core/agent-memory.js";
|
|
8
2
|
import type { MemoryItem } from "../core/types.js";
|
|
9
3
|
export interface IngestUrlOptions {
|
|
10
|
-
/** Local path (e.g. ./doc.pdf) or remote URL; format detected by content-type/extension. */
|
|
11
4
|
url: string;
|
|
12
5
|
namespace: string;
|
|
13
6
|
type?: "knowledge";
|
|
14
|
-
/** Approximate chars per chunk; paragraph-based semantic chunking. Default 800. */
|
|
15
7
|
chunkSize?: number;
|
|
16
8
|
metadata?: Record<string, unknown>;
|
|
17
|
-
/** For images: generate caption (VLM); we store caption + URL only, never the image binary. */
|
|
18
9
|
captionFn?: (buffer: Buffer) => Promise<string>;
|
|
19
10
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Ingest from local path or remote URL; detect PDF/txt/HTML/image by format, then write as knowledge.
|
|
22
|
-
*/
|
|
23
11
|
export declare function ingestUrlToMemory(memory: AgentMemory, options: IngestUrlOptions): Promise<{
|
|
24
12
|
count: number;
|
|
25
13
|
firstItem?: MemoryItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"url-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAwBD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAIpD"}
|