@danielzfliu/memory 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +361 -195
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +47 -0
- package/dist/config.js.map +1 -0
- package/dist/http-main.d.ts +2 -0
- package/dist/http-main.d.ts.map +1 -0
- package/dist/http-main.js +9 -0
- package/dist/http-main.js.map +1 -0
- package/dist/hybrid.d.ts +8 -0
- package/dist/hybrid.d.ts.map +1 -0
- package/dist/hybrid.js +46 -0
- package/dist/hybrid.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.js +6 -5
- package/dist/main.js.map +1 -1
- package/dist/mcp.d.ts +20 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +170 -0
- package/dist/mcp.js.map +1 -0
- package/dist/rag.d.ts +1 -1
- package/dist/rag.d.ts.map +1 -1
- package/dist/rag.js +14 -7
- package/dist/rag.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +109 -12
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +10 -7
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +149 -49
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -8
- package/dist/types.js.map +1 -1
- package/package.json +74 -62
package/dist/store.d.ts
CHANGED
|
@@ -2,15 +2,18 @@ import { Piece, MemoryConfig, QueryOptions, QueryResult } from "./types";
|
|
|
2
2
|
export declare class PieceStore {
|
|
3
3
|
private readonly chromaClient;
|
|
4
4
|
private readonly embeddingClient;
|
|
5
|
-
private
|
|
5
|
+
private readonly collectionCache;
|
|
6
|
+
private initialized;
|
|
6
7
|
private readonly config;
|
|
7
8
|
constructor(config?: MemoryConfig);
|
|
8
9
|
init(): Promise<void>;
|
|
9
|
-
private
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
private resolveCollection;
|
|
11
|
+
listCollections(): Promise<string[]>;
|
|
12
|
+
deleteCollection(name: string): Promise<void>;
|
|
13
|
+
addPiece(content: string, tags: string[], title?: string, collection?: string): Promise<Piece>;
|
|
14
|
+
getPiece(id: string, collection?: string): Promise<Piece | null>;
|
|
15
|
+
deletePiece(id: string, collection?: string): Promise<void>;
|
|
16
|
+
updatePiece(id: string, content?: string, tags?: string[], title?: string | null, collection?: string): Promise<Piece | null>;
|
|
17
|
+
queryPieces(query: string, options?: QueryOptions, collection?: string): Promise<QueryResult[]>;
|
|
15
18
|
}
|
|
16
19
|
//# sourceMappingURL=store.d.ts.map
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACd,MAAM,SAAS,CAAC;AAwEjB,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAEpC,MAAM,GAAE,YAAiB;IAS/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASb,iBAAiB;IAgBzB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOpC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAsB9F,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAmBhE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,WAAW,CACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAyClB,WAAW,CACb,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,YAAiB,EAC1B,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC;CAyE5B"}
|
package/dist/store.js
CHANGED
|
@@ -4,105 +4,183 @@ exports.PieceStore = void 0;
|
|
|
4
4
|
const chromadb_1 = require("chromadb");
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
6
|
const embeddings_1 = require("./embeddings");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const hybrid_1 = require("./hybrid");
|
|
8
|
+
const config_1 = require("./config");
|
|
9
|
+
function toTagMetadataKey(tag) {
|
|
10
|
+
return `tag_${Buffer.from(tag, "utf8").toString("base64url")}`;
|
|
11
|
+
}
|
|
12
|
+
function toChromaMetadata(tags, title) {
|
|
13
|
+
const normalizedTags = normalizeTags(tags);
|
|
14
|
+
const normalizedTitle = normalizeTitle(title);
|
|
15
|
+
return {
|
|
16
|
+
tags: JSON.stringify(normalizedTags),
|
|
17
|
+
...Object.fromEntries(normalizedTags.map((tag) => [toTagMetadataKey(tag), true])),
|
|
18
|
+
...(normalizedTitle !== undefined ? { title: normalizedTitle } : {}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function normalizeTags(value) {
|
|
22
|
+
if (Array.isArray(value)) {
|
|
23
|
+
return value.filter((tag) => typeof tag === "string");
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === "string") {
|
|
26
|
+
try {
|
|
27
|
+
const parsed = JSON.parse(value);
|
|
28
|
+
return Array.isArray(parsed)
|
|
29
|
+
? parsed.filter((tag) => typeof tag === "string")
|
|
30
|
+
: [];
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
function normalizeTitle(value) {
|
|
39
|
+
return typeof value === "string" ? value : undefined;
|
|
10
40
|
}
|
|
11
41
|
function parseTags(metadata) {
|
|
12
|
-
return metadata?.tags
|
|
42
|
+
return normalizeTags(metadata?.tags);
|
|
43
|
+
}
|
|
44
|
+
function parseTitle(metadata) {
|
|
45
|
+
return normalizeTitle(metadata?.title);
|
|
46
|
+
}
|
|
47
|
+
function toEmbeddingText(content, title) {
|
|
48
|
+
return title ? `${title}\n\n${content}` : content;
|
|
49
|
+
}
|
|
50
|
+
function buildTagWhereClause(tags) {
|
|
51
|
+
if (tags.length === 0) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
if (tags.length === 1) {
|
|
55
|
+
return { [toTagMetadataKey(tags[0])]: true };
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
$and: tags.map((tag) => ({
|
|
59
|
+
[toTagMetadataKey(tag)]: true,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
13
62
|
}
|
|
14
63
|
class PieceStore {
|
|
15
64
|
chromaClient;
|
|
16
65
|
embeddingClient;
|
|
17
|
-
|
|
66
|
+
collectionCache = new Map();
|
|
67
|
+
initialized = false;
|
|
18
68
|
config;
|
|
19
69
|
constructor(config = {}) {
|
|
20
|
-
this.config =
|
|
70
|
+
this.config = (0, config_1.resolveConfig)(config);
|
|
21
71
|
this.chromaClient = new chromadb_1.ChromaClient({ path: this.config.chromaUrl });
|
|
22
72
|
this.embeddingClient = new embeddings_1.EmbeddingClient(this.config.ollamaUrl, this.config.embeddingModel);
|
|
23
73
|
}
|
|
24
74
|
async init() {
|
|
25
|
-
|
|
75
|
+
const collection = await this.chromaClient.getOrCreateCollection({
|
|
26
76
|
name: this.config.collectionName,
|
|
27
77
|
metadata: { "hnsw:space": "cosine" },
|
|
28
78
|
});
|
|
79
|
+
this.collectionCache.set(this.config.collectionName, collection);
|
|
80
|
+
this.initialized = true;
|
|
29
81
|
}
|
|
30
|
-
|
|
31
|
-
if (!this.
|
|
82
|
+
async resolveCollection(name) {
|
|
83
|
+
if (!this.initialized) {
|
|
32
84
|
throw new Error("PieceStore not initialized. Call init() first.");
|
|
33
85
|
}
|
|
34
|
-
|
|
86
|
+
const collectionName = name ?? this.config.collectionName;
|
|
87
|
+
let collection = this.collectionCache.get(collectionName);
|
|
88
|
+
if (!collection) {
|
|
89
|
+
collection = await this.chromaClient.getOrCreateCollection({
|
|
90
|
+
name: collectionName,
|
|
91
|
+
metadata: { "hnsw:space": "cosine" },
|
|
92
|
+
});
|
|
93
|
+
this.collectionCache.set(collectionName, collection);
|
|
94
|
+
}
|
|
95
|
+
return collection;
|
|
35
96
|
}
|
|
36
|
-
async
|
|
37
|
-
|
|
97
|
+
async listCollections() {
|
|
98
|
+
if (!this.initialized) {
|
|
99
|
+
throw new Error("PieceStore not initialized. Call init() first.");
|
|
100
|
+
}
|
|
101
|
+
return this.chromaClient.listCollections();
|
|
102
|
+
}
|
|
103
|
+
async deleteCollection(name) {
|
|
104
|
+
if (!this.initialized) {
|
|
105
|
+
throw new Error("PieceStore not initialized. Call init() first.");
|
|
106
|
+
}
|
|
107
|
+
await this.chromaClient.deleteCollection({ name });
|
|
108
|
+
this.collectionCache.delete(name);
|
|
109
|
+
}
|
|
110
|
+
async addPiece(content, tags, title, collection) {
|
|
111
|
+
const col = await this.resolveCollection(collection);
|
|
38
112
|
const id = (0, uuid_1.v4)();
|
|
39
|
-
const embedding = await this.embeddingClient.embed(content);
|
|
40
|
-
await
|
|
113
|
+
const embedding = await this.embeddingClient.embed(toEmbeddingText(content, title));
|
|
114
|
+
await col.add({
|
|
41
115
|
ids: [id],
|
|
42
116
|
embeddings: [embedding],
|
|
43
117
|
documents: [content],
|
|
44
|
-
metadatas: [toChromaMetadata(tags)],
|
|
118
|
+
metadatas: [toChromaMetadata(tags, title)],
|
|
45
119
|
});
|
|
46
|
-
return {
|
|
120
|
+
return {
|
|
121
|
+
id,
|
|
122
|
+
content,
|
|
123
|
+
...(title !== undefined ? { title } : {}),
|
|
124
|
+
tags,
|
|
125
|
+
};
|
|
47
126
|
}
|
|
48
|
-
async getPiece(id) {
|
|
49
|
-
const
|
|
50
|
-
const result = await
|
|
127
|
+
async getPiece(id, collection) {
|
|
128
|
+
const col = await this.resolveCollection(collection);
|
|
129
|
+
const result = await col.get({
|
|
51
130
|
ids: [id],
|
|
52
131
|
include: [chromadb_1.IncludeEnum.Documents, chromadb_1.IncludeEnum.Metadatas],
|
|
53
132
|
});
|
|
54
133
|
if (!result.ids.length)
|
|
55
134
|
return null;
|
|
135
|
+
const title = parseTitle(result.metadatas[0]);
|
|
56
136
|
return {
|
|
57
137
|
id: result.ids[0],
|
|
58
138
|
content: result.documents[0] ?? "",
|
|
139
|
+
...(title !== undefined ? { title } : {}),
|
|
59
140
|
tags: parseTags(result.metadatas[0]),
|
|
60
141
|
};
|
|
61
142
|
}
|
|
62
|
-
async deletePiece(id) {
|
|
63
|
-
const
|
|
64
|
-
await
|
|
143
|
+
async deletePiece(id, collection) {
|
|
144
|
+
const col = await this.resolveCollection(collection);
|
|
145
|
+
await col.delete({ ids: [id] });
|
|
65
146
|
}
|
|
66
|
-
async updatePiece(id, content, tags) {
|
|
67
|
-
const
|
|
68
|
-
const existing = await this.getPiece(id);
|
|
147
|
+
async updatePiece(id, content, tags, title, collection) {
|
|
148
|
+
const col = await this.resolveCollection(collection);
|
|
149
|
+
const existing = await this.getPiece(id, collection);
|
|
69
150
|
if (!existing)
|
|
70
151
|
return null;
|
|
71
152
|
const newContent = content ?? existing.content;
|
|
72
153
|
const newTags = tags ?? existing.tags;
|
|
154
|
+
const newTitle = title === undefined ? existing.title : title ?? undefined;
|
|
73
155
|
const updateData = {
|
|
74
156
|
ids: [id],
|
|
75
|
-
metadatas: [toChromaMetadata(newTags)],
|
|
157
|
+
metadatas: [toChromaMetadata(newTags, newTitle)],
|
|
76
158
|
};
|
|
77
159
|
if (content !== undefined) {
|
|
78
160
|
updateData.documents = [newContent];
|
|
161
|
+
}
|
|
162
|
+
if (content !== undefined || title !== undefined) {
|
|
79
163
|
updateData.embeddings = [
|
|
80
|
-
await this.embeddingClient.embed(newContent),
|
|
164
|
+
await this.embeddingClient.embed(toEmbeddingText(newContent, newTitle)),
|
|
81
165
|
];
|
|
82
166
|
}
|
|
83
|
-
await
|
|
84
|
-
return {
|
|
167
|
+
await col.update(updateData);
|
|
168
|
+
return {
|
|
169
|
+
id,
|
|
170
|
+
content: newContent,
|
|
171
|
+
...(newTitle !== undefined ? { title: newTitle } : {}),
|
|
172
|
+
tags: newTags,
|
|
173
|
+
};
|
|
85
174
|
}
|
|
86
|
-
async queryPieces(query, options = {}) {
|
|
87
|
-
const
|
|
88
|
-
const { tags, topK = 10 } = options;
|
|
175
|
+
async queryPieces(query, options = {}, collection) {
|
|
176
|
+
const col = await this.resolveCollection(collection);
|
|
177
|
+
const { tags, topK = 10, useHybridSearch = false } = options;
|
|
89
178
|
const queryEmbedding = await this.embeddingClient.embed(query);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
whereClause = { tags: { $contains: tags[0] } };
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
whereClause = {
|
|
97
|
-
$and: tags.map((tag) => ({
|
|
98
|
-
tags: { $contains: tag },
|
|
99
|
-
})),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
const results = await collection.query({
|
|
179
|
+
const whereClause = buildTagWhereClause(tags ?? []);
|
|
180
|
+
const fetchK = useHybridSearch ? topK * 3 : topK;
|
|
181
|
+
const results = await col.query({
|
|
104
182
|
queryEmbeddings: [queryEmbedding],
|
|
105
|
-
nResults:
|
|
183
|
+
nResults: fetchK,
|
|
106
184
|
where: whereClause,
|
|
107
185
|
include: [
|
|
108
186
|
chromadb_1.IncludeEnum.Documents,
|
|
@@ -110,22 +188,44 @@ class PieceStore {
|
|
|
110
188
|
chromadb_1.IncludeEnum.Distances,
|
|
111
189
|
],
|
|
112
190
|
});
|
|
113
|
-
const queryResults = [];
|
|
114
191
|
const ids = results.ids[0] ?? [];
|
|
115
192
|
const documents = results.documents[0] ?? [];
|
|
116
193
|
const metadatas = results.metadatas[0] ?? [];
|
|
117
194
|
const distances = results.distances?.[0] ?? [];
|
|
195
|
+
const queryResults = [];
|
|
118
196
|
for (let i = 0; i < ids.length; i++) {
|
|
197
|
+
const title = parseTitle(metadatas[i]);
|
|
119
198
|
queryResults.push({
|
|
120
199
|
piece: {
|
|
121
200
|
id: ids[i],
|
|
122
201
|
content: documents[i] ?? "",
|
|
202
|
+
...(title !== undefined ? { title } : {}),
|
|
123
203
|
tags: parseTags(metadatas[i]),
|
|
124
204
|
},
|
|
125
205
|
score: 1 - (distances[i] ?? 0), // cosine distance → similarity
|
|
126
206
|
});
|
|
127
207
|
}
|
|
128
|
-
|
|
208
|
+
if (!useHybridSearch) {
|
|
209
|
+
return queryResults;
|
|
210
|
+
}
|
|
211
|
+
// ── Hybrid: RRF merge of vector ranking + keyword ranking ────────
|
|
212
|
+
const queryTokens = (0, hybrid_1.tokenize)(query);
|
|
213
|
+
const vectorRanking = queryResults.map((r) => ({
|
|
214
|
+
item: r,
|
|
215
|
+
score: r.score,
|
|
216
|
+
}));
|
|
217
|
+
const keywordRanking = queryResults
|
|
218
|
+
.map((r) => ({
|
|
219
|
+
item: r,
|
|
220
|
+
score: (0, hybrid_1.keywordScore)(queryTokens, toEmbeddingText(r.piece.content, r.piece.title)),
|
|
221
|
+
}))
|
|
222
|
+
.filter((r) => r.score > 0)
|
|
223
|
+
.sort((a, b) => b.score - a.score);
|
|
224
|
+
const fused = (0, hybrid_1.reciprocalRankFusion)([vectorRanking, keywordRanking], (r) => r.piece.id);
|
|
225
|
+
return fused.slice(0, topK).map((f) => ({
|
|
226
|
+
...f.item,
|
|
227
|
+
score: f.score,
|
|
228
|
+
}));
|
|
129
229
|
}
|
|
130
230
|
}
|
|
131
231
|
exports.PieceStore = PieceStore;
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":";;;AAAA,uCAAiE;AACjE,+BAAoC;AACpC,6CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface Piece {
|
|
2
2
|
id: string;
|
|
3
3
|
content: string;
|
|
4
|
+
title?: string;
|
|
4
5
|
tags: string[];
|
|
5
6
|
}
|
|
6
7
|
export interface MemoryConfig {
|
|
@@ -10,10 +11,10 @@ export interface MemoryConfig {
|
|
|
10
11
|
generationModel?: string;
|
|
11
12
|
collectionName?: string;
|
|
12
13
|
}
|
|
13
|
-
export declare const DEFAULT_MEMORY_CONFIG: Required<MemoryConfig>;
|
|
14
14
|
export interface QueryOptions {
|
|
15
15
|
tags?: string[];
|
|
16
16
|
topK?: number;
|
|
17
|
+
useHybridSearch?: boolean;
|
|
17
18
|
}
|
|
18
19
|
export interface QueryResult {
|
|
19
20
|
piece: Piece;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B"}
|
package/dist/types.js
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_MEMORY_CONFIG = void 0;
|
|
4
|
-
exports.DEFAULT_MEMORY_CONFIG = {
|
|
5
|
-
chromaUrl: "http://localhost:8000",
|
|
6
|
-
ollamaUrl: "http://localhost:11434",
|
|
7
|
-
embeddingModel: "nomic-embed-text-v2-moe",
|
|
8
|
-
generationModel: "llama3.2",
|
|
9
|
-
collectionName: "pieces",
|
|
10
|
-
};
|
|
11
3
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,62 +1,74 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@danielzfliu/memory",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "A local
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
|
-
"require": "./dist/index.js"
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"
|
|
14
|
-
"dist"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
},
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@danielzfliu/memory",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "A local MCP server and Node.js library for storing, searching, and querying tagged text pieces using ChromaDB and Ollama",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"require": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"bin": {
|
|
14
|
+
"memory-mcp": "dist/main.js"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/DanielZFLiu/memory.git"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=18"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"mcp",
|
|
30
|
+
"model-context-protocol",
|
|
31
|
+
"rag",
|
|
32
|
+
"chromadb",
|
|
33
|
+
"ollama",
|
|
34
|
+
"vector-search",
|
|
35
|
+
"embeddings",
|
|
36
|
+
"local-ai"
|
|
37
|
+
],
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsc",
|
|
40
|
+
"dev": "tsx src/main.ts",
|
|
41
|
+
"dev:http": "tsx src/http-main.ts",
|
|
42
|
+
"start": "node dist/main.js",
|
|
43
|
+
"start:http": "node dist/http-main.js",
|
|
44
|
+
"test": "vitest run",
|
|
45
|
+
"test:watch": "vitest",
|
|
46
|
+
"test:coverage": "vitest run --coverage",
|
|
47
|
+
"docker:up": "docker compose up -d",
|
|
48
|
+
"docker:down": "docker compose down",
|
|
49
|
+
"docker:logs": "docker compose logs -f chromadb",
|
|
50
|
+
"prepublishOnly": "npm run build",
|
|
51
|
+
"db": "chroma run --port 8000",
|
|
52
|
+
"db:port": "node ./package_scripts/serve-chroma.js",
|
|
53
|
+
"ollama": "ollama serve",
|
|
54
|
+
"ollama:port": "node ./package_scripts/serve-ollama.js"
|
|
55
|
+
},
|
|
56
|
+
"license": "GPL-3.0",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
59
|
+
"chromadb": "^1.10.5",
|
|
60
|
+
"express": "^4.21.0",
|
|
61
|
+
"ollama": "^0.5.11",
|
|
62
|
+
"uuid": "^11.0.3",
|
|
63
|
+
"zod": "^4.3.6"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@types/express": "^5.0.0",
|
|
67
|
+
"@types/supertest": "^6.0.3",
|
|
68
|
+
"@types/uuid": "^10.0.0",
|
|
69
|
+
"supertest": "^7.2.2",
|
|
70
|
+
"tsx": "^4.19.0",
|
|
71
|
+
"typescript": "^5.6.0",
|
|
72
|
+
"vitest": "^4.0.18"
|
|
73
|
+
}
|
|
74
|
+
}
|