@sharkdyt/omni-memory-mcp 1.0.3 → 1.0.5
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 +40 -3
- package/dist/database.d.ts +5 -1
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +187 -30
- package/dist/database.js.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/add.d.ts +2 -0
- package/dist/tools/add.d.ts.map +1 -1
- package/dist/tools/add.js +4 -2
- package/dist/tools/add.js.map +1 -1
- package/dist/tools/list.js +3 -3
- package/dist/tools/list.js.map +1 -1
- package/dist/tools/prune.d.ts +11 -0
- package/dist/tools/prune.d.ts.map +1 -0
- package/dist/tools/prune.js +34 -0
- package/dist/tools/prune.js.map +1 -0
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +7 -5
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/stats.d.ts +7 -0
- package/dist/tools/stats.d.ts.map +1 -0
- package/dist/tools/stats.js +53 -0
- package/dist/tools/stats.js.map +1 -0
- package/dist/tools/update.d.ts +2 -0
- package/dist/tools/update.d.ts.map +1 -1
- package/dist/tools/update.js +4 -2
- package/dist/tools/update.js.map +1 -1
- package/dist/types.d.ts +31 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Universal memory MCP server for multi-agent workflows.
|
|
|
7
7
|
|
|
8
8
|
- Package: `@sharkdyt/omni-memory-mcp`
|
|
9
9
|
- npm: `https://www.npmjs.com/package/@sharkdyt/omni-memory-mcp`
|
|
10
|
-
- Current `latest`: `1.0.
|
|
10
|
+
- Current `latest`: `1.0.5`
|
|
11
11
|
|
|
12
12
|
## Project Memory
|
|
13
13
|
|
|
@@ -25,7 +25,11 @@ Operational context is stored through Omni Memory itself.
|
|
|
25
25
|
- Local-first storage (SQLite)
|
|
26
26
|
- Full-text search with FTS5
|
|
27
27
|
- MCP-native tools
|
|
28
|
+
- **Progressive Disclosure:** Searches return metadata and summaries instead of full text to prevent LLM context overflow.
|
|
29
|
+
- **Active Forgetting Tracking:** Read actions (`memory_get`) increment `access_count` and update `accessed_at`.
|
|
28
30
|
- CRUD operations (`memory_add`, `memory_get`, `memory_update`, `memory_delete`, `memory_list`, `memory_search`)
|
|
31
|
+
- Context optimization tools (`memory_prune`)
|
|
32
|
+
- Diagnostic tools (`memory_stats`)
|
|
29
33
|
- Organization by `area`, `project`, and `tags`
|
|
30
34
|
- Shared long-term memory across multiple projects and multiple coding agents/clients
|
|
31
35
|
- Canonical MCP config + client adapters (OpenCode, Codex, Cursor)
|
|
@@ -186,15 +190,21 @@ Then copy the generated file for your client/platform from `config/mcp/generated
|
|
|
186
190
|
|
|
187
191
|
```json
|
|
188
192
|
{
|
|
193
|
+
"name": "User typescript preferences",
|
|
189
194
|
"content": "User prefers TypeScript with strict mode",
|
|
190
195
|
"area": "preferences",
|
|
191
196
|
"project": "my-project",
|
|
192
|
-
"tags": ["typescript", "coding-style"]
|
|
197
|
+
"tags": ["typescript", "coding-style"],
|
|
198
|
+
"metadata": {
|
|
199
|
+
"source": "conversation setup"
|
|
200
|
+
}
|
|
193
201
|
}
|
|
194
202
|
```
|
|
195
203
|
|
|
196
204
|
### `memory_get`
|
|
197
205
|
|
|
206
|
+
*Note: Fetching a memory via `memory_get` registers an access (increments `access_count` and updates `accessed_at`), indicating the memory is actively used.*
|
|
207
|
+
|
|
198
208
|
```json
|
|
199
209
|
{
|
|
200
210
|
"id": "abc123"
|
|
@@ -206,6 +216,7 @@ Then copy the generated file for your client/platform from `config/mcp/generated
|
|
|
206
216
|
```json
|
|
207
217
|
{
|
|
208
218
|
"id": "abc123",
|
|
219
|
+
"name": "Updated typescript preferences",
|
|
209
220
|
"content": "Updated content",
|
|
210
221
|
"tags": ["new-tag"]
|
|
211
222
|
}
|
|
@@ -221,6 +232,8 @@ Then copy the generated file for your client/platform from `config/mcp/generated
|
|
|
221
232
|
|
|
222
233
|
### `memory_list`
|
|
223
234
|
|
|
235
|
+
*Note: Enforces Progressive Disclosure. It returns only IDs, Names, and metadata. You must call `memory_get` with the specific ID to read the full content.*
|
|
236
|
+
|
|
224
237
|
```json
|
|
225
238
|
{
|
|
226
239
|
"area": "snippets",
|
|
@@ -232,13 +245,37 @@ Then copy the generated file for your client/platform from `config/mcp/generated
|
|
|
232
245
|
|
|
233
246
|
### `memory_search`
|
|
234
247
|
|
|
248
|
+
*Note: Enforces Progressive Disclosure. It returns only IDs, Names, and metadata. You must call `memory_get` with the specific ID to read the full content.*
|
|
249
|
+
|
|
235
250
|
```json
|
|
236
251
|
{
|
|
237
252
|
"query": "typescript configuration",
|
|
238
253
|
"project": "my-project",
|
|
239
|
-
"limit": 10
|
|
254
|
+
"limit": 10,
|
|
255
|
+
"enableAdvancedSyntax": false
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
*Note: `enableAdvancedSyntax` allows FTS5 boolean logic (e.g. `"typescript" AND "react" NOT "vue"`) but requires a strictly valid FTS5 query or it will throw an error.*
|
|
260
|
+
|
|
261
|
+
### `memory_stats`
|
|
262
|
+
|
|
263
|
+
```json
|
|
264
|
+
{}
|
|
265
|
+
```
|
|
266
|
+
*Returns total memories, size on disk, and breakdown by project and area.*
|
|
267
|
+
|
|
268
|
+
### `memory_prune`
|
|
269
|
+
|
|
270
|
+
*Note: Cleans up memories that have decayed below a specific score dynamically calculated based on `created_at`, `accessed_at`, and `access_count`.*
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"threshold_score": 0,
|
|
275
|
+
"dry_run": true
|
|
240
276
|
}
|
|
241
277
|
```
|
|
278
|
+
*Always use `dry_run: true` first to see how many and which memories would be pruned before running the destructible cleanup.*
|
|
242
279
|
|
|
243
280
|
## Memory Areas
|
|
244
281
|
|
package/dist/database.d.ts
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Omni Memory MCP - Database Module
|
|
3
3
|
* SQLite + FTS5 for local memory storage and full-text search
|
|
4
4
|
*/
|
|
5
|
-
import type { Memory, AddMemoryArgs, UpdateMemoryArgs, ListMemoryArgs, SearchMemoryArgs, SearchResult } from "./types.js";
|
|
5
|
+
import type { Memory, AddMemoryArgs, UpdateMemoryArgs, ListMemoryArgs, SearchMemoryArgs, SearchResult, MemoryStats, PruneMemoryArgs, PruneMemoryResult } from "./types.js";
|
|
6
6
|
declare function normalizeUserPath(inputPath: string): string;
|
|
7
7
|
declare function resolveStoragePaths(): {
|
|
8
8
|
dataDir: string;
|
|
9
9
|
dbPath: string;
|
|
10
10
|
};
|
|
11
|
+
export declare function calculateDecayScore(createdAt: string, accessedAt: string | null, accessCount: number, baseScore?: number): number;
|
|
11
12
|
export declare function addMemory(args: AddMemoryArgs): {
|
|
12
13
|
id: string;
|
|
13
14
|
};
|
|
@@ -19,7 +20,10 @@ export declare function deleteMemory(id: string): {
|
|
|
19
20
|
changes: number;
|
|
20
21
|
};
|
|
21
22
|
export declare function listMemories(args: ListMemoryArgs): Memory[];
|
|
23
|
+
export declare function getStats(): MemoryStats;
|
|
22
24
|
export declare function searchMemories(args: SearchMemoryArgs): SearchResult[];
|
|
25
|
+
export declare function fallbackSearch(args: SearchMemoryArgs): SearchResult[];
|
|
26
|
+
export declare function pruneMemories(args: PruneMemoryArgs): PruneMemoryResult;
|
|
23
27
|
export declare function closeDatabase(): void;
|
|
24
28
|
export { resolveStoragePaths, normalizeUserPath };
|
|
25
29
|
export declare function resetDatabase(): void;
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,MAAM,EAEN,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,MAAM,EAEN,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAcpB,iBAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASpD;AAED,iBAAS,mBAAmB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQlE;AAuGD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAU,GACpB,MAAM,CAUR;AAuBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAiB7D;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BxE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAM5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CA6B3D;AAED,wBAAgB,QAAQ,IAAI,WAAW,CAiCtC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAuErE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAuDrE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAgCtE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAGlD,wBAAgB,aAAa,IAAI,IAAI,CASpC"}
|
package/dist/database.js
CHANGED
|
@@ -28,7 +28,7 @@ function resolveStoragePaths() {
|
|
|
28
28
|
const defaultDir = join(homedir(), ".omni-memory");
|
|
29
29
|
const dataDir = normalizeUserPath(process.env.OMNI_MEMORY_DIR || defaultDir);
|
|
30
30
|
const dbPath = process.env.OMNI_MEMORY_DB
|
|
31
|
-
? normalizeUserPath(process.env.OMNI_MEMORY_DB)
|
|
31
|
+
? (process.env.OMNI_MEMORY_DB === ":memory:" ? ":memory:" : normalizeUserPath(process.env.OMNI_MEMORY_DB))
|
|
32
32
|
: join(dataDir, "omni-memory.db");
|
|
33
33
|
return { dataDir, dbPath };
|
|
34
34
|
}
|
|
@@ -41,9 +41,11 @@ function getDatabase() {
|
|
|
41
41
|
if (!existsSync(DATA_DIR)) {
|
|
42
42
|
mkdirSync(DATA_DIR, { recursive: true });
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
if (DB_PATH !== ":memory:") {
|
|
45
|
+
const dbDirectory = dirname(DB_PATH);
|
|
46
|
+
if (!existsSync(dbDirectory)) {
|
|
47
|
+
mkdirSync(dbDirectory, { recursive: true });
|
|
48
|
+
}
|
|
47
49
|
}
|
|
48
50
|
db = new Database(DB_PATH);
|
|
49
51
|
db.pragma("journal_mode = WAL");
|
|
@@ -63,9 +65,24 @@ function initializeSchema(database) {
|
|
|
63
65
|
updated_at TEXT DEFAULT (datetime('now'))
|
|
64
66
|
)
|
|
65
67
|
`);
|
|
68
|
+
// Migrate existing schema
|
|
69
|
+
const columns = database.pragma("table_info(memories)");
|
|
70
|
+
const hasName = columns.some((c) => c.name === "name");
|
|
71
|
+
if (!hasName) {
|
|
72
|
+
database.exec("ALTER TABLE memories ADD COLUMN name TEXT");
|
|
73
|
+
database.exec("ALTER TABLE memories ADD COLUMN metadata TEXT");
|
|
74
|
+
database.exec("ALTER TABLE memories ADD COLUMN accessed_at TEXT");
|
|
75
|
+
database.exec("ALTER TABLE memories ADD COLUMN access_count INTEGER DEFAULT 0");
|
|
76
|
+
// Recreate FTS
|
|
77
|
+
database.exec("DROP TABLE IF EXISTS memories_fts");
|
|
78
|
+
database.exec("DROP TRIGGER IF EXISTS memories_ai");
|
|
79
|
+
database.exec("DROP TRIGGER IF EXISTS memories_ad");
|
|
80
|
+
database.exec("DROP TRIGGER IF EXISTS memories_au");
|
|
81
|
+
}
|
|
66
82
|
// Create FTS5 virtual table
|
|
67
83
|
database.exec(`
|
|
68
84
|
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
85
|
+
name,
|
|
69
86
|
content,
|
|
70
87
|
project,
|
|
71
88
|
tags,
|
|
@@ -76,34 +93,58 @@ function initializeSchema(database) {
|
|
|
76
93
|
// Create triggers for FTS sync
|
|
77
94
|
database.exec(`
|
|
78
95
|
CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
|
|
79
|
-
INSERT INTO memories_fts(rowid, content, project, tags)
|
|
80
|
-
VALUES (new.rowid, new.content, COALESCE(new.project, ''), new.tags);
|
|
96
|
+
INSERT INTO memories_fts(rowid, name, content, project, tags)
|
|
97
|
+
VALUES (new.rowid, COALESCE(new.name, ''), new.content, COALESCE(new.project, ''), new.tags);
|
|
81
98
|
END
|
|
82
99
|
`);
|
|
83
100
|
database.exec(`
|
|
84
101
|
CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
|
|
85
|
-
INSERT INTO memories_fts(memories_fts, rowid, content, project, tags)
|
|
86
|
-
VALUES('delete', old.rowid, old.content, COALESCE(old.project, ''), old.tags);
|
|
102
|
+
INSERT INTO memories_fts(memories_fts, rowid, name, content, project, tags)
|
|
103
|
+
VALUES('delete', old.rowid, COALESCE(old.name, ''), old.content, COALESCE(old.project, ''), old.tags);
|
|
87
104
|
END
|
|
88
105
|
`);
|
|
89
106
|
database.exec(`
|
|
90
107
|
CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
|
|
91
|
-
INSERT INTO memories_fts(memories_fts, rowid, content, project, tags)
|
|
92
|
-
VALUES('delete', old.rowid, old.content, COALESCE(old.project, ''), old.tags);
|
|
93
|
-
INSERT INTO memories_fts(rowid, content, project, tags)
|
|
94
|
-
VALUES (new.rowid, new.content, COALESCE(new.project, ''), new.tags);
|
|
108
|
+
INSERT INTO memories_fts(memories_fts, rowid, name, content, project, tags)
|
|
109
|
+
VALUES('delete', old.rowid, COALESCE(old.name, ''), old.content, COALESCE(old.project, ''), old.tags);
|
|
110
|
+
INSERT INTO memories_fts(rowid, name, content, project, tags)
|
|
111
|
+
VALUES (new.rowid, COALESCE(new.name, ''), new.content, COALESCE(new.project, ''), new.tags);
|
|
95
112
|
END
|
|
96
113
|
`);
|
|
114
|
+
if (!hasName) {
|
|
115
|
+
// Rebuild the FTS data
|
|
116
|
+
database.exec(`
|
|
117
|
+
INSERT INTO memories_fts(rowid, name, content, project, tags)
|
|
118
|
+
SELECT rowid, COALESCE(name, ''), content, COALESCE(project, ''), tags FROM memories;
|
|
119
|
+
`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function calculateDecayScore(createdAt, accessedAt, accessCount, baseScore = 0) {
|
|
123
|
+
const lastAccess = accessedAt ? new Date(accessedAt) : new Date(createdAt);
|
|
124
|
+
const now = new Date();
|
|
125
|
+
const diffDays = Math.max(0, (now.getTime() - lastAccess.getTime()) / (1000 * 60 * 60 * 24));
|
|
126
|
+
let score = baseScore;
|
|
127
|
+
score += Math.min(1.0, accessCount * 0.05); // Bonus max +1.0
|
|
128
|
+
score -= Math.min(5.0, diffDays * 0.1); // Penalty max -5.0
|
|
129
|
+
return Number(score.toFixed(3));
|
|
97
130
|
}
|
|
98
131
|
function rowToMemory(row) {
|
|
132
|
+
const accessedAt = row.accessed_at;
|
|
133
|
+
const accessCount = row.access_count || 0;
|
|
134
|
+
const createdAt = row.created_at;
|
|
99
135
|
return {
|
|
100
136
|
id: row.id,
|
|
137
|
+
name: row.name,
|
|
101
138
|
content: row.content,
|
|
102
139
|
area: row.area || "general",
|
|
103
140
|
project: row.project,
|
|
104
141
|
tags: JSON.parse(row.tags || "[]"),
|
|
105
|
-
|
|
142
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : null,
|
|
143
|
+
accessed_at: accessedAt,
|
|
144
|
+
access_count: accessCount,
|
|
145
|
+
created_at: createdAt,
|
|
106
146
|
updated_at: row.updated_at,
|
|
147
|
+
decay_score: calculateDecayScore(createdAt, accessedAt, accessCount, 0),
|
|
107
148
|
};
|
|
108
149
|
}
|
|
109
150
|
export function addMemory(args) {
|
|
@@ -112,15 +153,20 @@ export function addMemory(args) {
|
|
|
112
153
|
const area = args.area || "general";
|
|
113
154
|
const project = args.project || null;
|
|
114
155
|
const tags = JSON.stringify(args.tags || []);
|
|
156
|
+
const name = args.name || null;
|
|
157
|
+
const metadata = args.metadata ? JSON.stringify(args.metadata) : null;
|
|
115
158
|
const stmt = database.prepare(`
|
|
116
|
-
INSERT INTO memories (id, content, area, project, tags)
|
|
117
|
-
VALUES (?, ?, ?, ?, ?)
|
|
159
|
+
INSERT INTO memories (id, name, content, area, project, tags, metadata)
|
|
160
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
118
161
|
`);
|
|
119
|
-
stmt.run(id, args.content, area, project, tags);
|
|
162
|
+
stmt.run(id, name, args.content, area, project, tags, metadata);
|
|
120
163
|
return { id };
|
|
121
164
|
}
|
|
122
165
|
export function getMemory(id) {
|
|
123
166
|
const database = getDatabase();
|
|
167
|
+
// Track Active Forgetting / Progressive Disclosure metrics
|
|
168
|
+
const updateStmt = database.prepare("UPDATE memories SET accessed_at = datetime('now'), access_count = access_count + 1 WHERE id = ?");
|
|
169
|
+
updateStmt.run(id);
|
|
124
170
|
const stmt = database.prepare("SELECT * FROM memories WHERE id = ?");
|
|
125
171
|
const row = stmt.get(id);
|
|
126
172
|
return row ? rowToMemory(row) : null;
|
|
@@ -133,16 +179,18 @@ export function updateMemory(args) {
|
|
|
133
179
|
return { changes: 0 };
|
|
134
180
|
}
|
|
135
181
|
// Merge updates
|
|
182
|
+
const name = args.name !== undefined ? args.name : existing.name;
|
|
136
183
|
const content = args.content ?? existing.content;
|
|
137
184
|
const area = args.area ?? existing.area;
|
|
138
185
|
const project = args.project !== undefined ? args.project : existing.project;
|
|
139
186
|
const tags = args.tags !== undefined ? JSON.stringify(args.tags) : JSON.stringify(existing.tags);
|
|
187
|
+
const metadata = args.metadata !== undefined ? JSON.stringify(args.metadata) : JSON.stringify(existing.metadata);
|
|
140
188
|
const stmt = database.prepare(`
|
|
141
189
|
UPDATE memories
|
|
142
|
-
SET content = ?, area = ?, project = ?, tags = ?, updated_at = datetime('now')
|
|
190
|
+
SET name = ?, content = ?, area = ?, project = ?, tags = ?, metadata = ?, updated_at = datetime('now')
|
|
143
191
|
WHERE id = ?
|
|
144
192
|
`);
|
|
145
|
-
const result = stmt.run(content, area, project, tags, args.id);
|
|
193
|
+
const result = stmt.run(name, content, area, project, tags, metadata, args.id);
|
|
146
194
|
return { changes: result.changes };
|
|
147
195
|
}
|
|
148
196
|
export function deleteMemory(id) {
|
|
@@ -174,11 +222,49 @@ export function listMemories(args) {
|
|
|
174
222
|
const rows = stmt.all(...params);
|
|
175
223
|
return rows.map(rowToMemory);
|
|
176
224
|
}
|
|
225
|
+
export function getStats() {
|
|
226
|
+
const database = getDatabase();
|
|
227
|
+
const total = database.prepare("SELECT count(*) as c FROM memories").get()?.c || 0;
|
|
228
|
+
const byAreaRows = database.prepare("SELECT area, count(*) as c FROM memories GROUP BY area").all();
|
|
229
|
+
const by_area = byAreaRows.reduce((acc, row) => {
|
|
230
|
+
acc[row.area || "general"] = row.c;
|
|
231
|
+
return acc;
|
|
232
|
+
}, {});
|
|
233
|
+
const byProjectRows = database.prepare("SELECT project, count(*) as c FROM memories GROUP BY project").all();
|
|
234
|
+
const by_project = byProjectRows.reduce((acc, row) => {
|
|
235
|
+
acc[row.project || "unassigned"] = row.c;
|
|
236
|
+
return acc;
|
|
237
|
+
}, {});
|
|
238
|
+
let total_size_bytes = 0;
|
|
239
|
+
if (DB_PATH !== ":memory:" && existsSync(DB_PATH)) {
|
|
240
|
+
try {
|
|
241
|
+
const stats = require("fs").statSync(DB_PATH);
|
|
242
|
+
total_size_bytes = stats.size;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
// Ignore if stat fails
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
total_memories: total,
|
|
250
|
+
by_area,
|
|
251
|
+
by_project,
|
|
252
|
+
total_size_bytes,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
177
255
|
export function searchMemories(args) {
|
|
178
256
|
const database = getDatabase();
|
|
179
257
|
const limit = Math.min(args.limit || 10, 50);
|
|
258
|
+
// Helper to sanitize FTS5 query to prevent syntax errors on special chars
|
|
259
|
+
// Removes unmatched quotes and escapes FTS keywords if present
|
|
260
|
+
const sanitizeFtsQuery = (rawQuery) => {
|
|
261
|
+
let clean = rawQuery.replace(/[\^+\-*'"~]/g, " "); // Replace FTS5 syntax chars with spaces
|
|
262
|
+
// Alternatively, you could wrap the whole thing in double quotes,
|
|
263
|
+
// but simply stripping operators guarantees no parse error for plain text queries
|
|
264
|
+
return clean.trim() ? `"${clean.replace(/"/g, '""').trim()}"` : rawQuery;
|
|
265
|
+
};
|
|
180
266
|
// Build FTS5 query with filters
|
|
181
|
-
let ftsQuery = args.query;
|
|
267
|
+
let ftsQuery = args.enableAdvancedSyntax ? args.query : sanitizeFtsQuery(args.query);
|
|
182
268
|
// Add area filter to query
|
|
183
269
|
if (args.area) {
|
|
184
270
|
// We'll filter results after search
|
|
@@ -204,21 +290,51 @@ export function searchMemories(args) {
|
|
|
204
290
|
try {
|
|
205
291
|
const stmt = database.prepare(sql);
|
|
206
292
|
const rows = stmt.all(...params);
|
|
207
|
-
return rows.map((row) =>
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
293
|
+
return rows.map((row) => {
|
|
294
|
+
const memory = rowToMemory(row);
|
|
295
|
+
return {
|
|
296
|
+
id: memory.id,
|
|
297
|
+
name: memory.name,
|
|
298
|
+
area: memory.area,
|
|
299
|
+
project: memory.project,
|
|
300
|
+
tags: memory.tags,
|
|
301
|
+
metadata: memory.metadata,
|
|
302
|
+
accessed_at: memory.accessed_at,
|
|
303
|
+
access_count: memory.access_count,
|
|
304
|
+
created_at: memory.created_at,
|
|
305
|
+
updated_at: memory.updated_at,
|
|
306
|
+
score: Math.abs(row.score) || 0,
|
|
307
|
+
decay_score: calculateDecayScore(memory.created_at, memory.accessed_at ?? null, memory.access_count || 0, Math.abs(row.score) || 0),
|
|
308
|
+
};
|
|
309
|
+
});
|
|
211
310
|
}
|
|
212
311
|
catch (error) {
|
|
312
|
+
if (args.enableAdvancedSyntax) {
|
|
313
|
+
throw new Error(`Invalid FTS5 advanced syntax: ${error instanceof Error ? error.message : String(error)}`);
|
|
314
|
+
}
|
|
213
315
|
// FTS5 might fail on special characters, fallback to LIKE search
|
|
214
316
|
return fallbackSearch(args);
|
|
215
317
|
}
|
|
216
318
|
}
|
|
217
|
-
function fallbackSearch(args) {
|
|
319
|
+
export function fallbackSearch(args) {
|
|
218
320
|
const database = getDatabase();
|
|
219
321
|
const limit = Math.min(args.limit || 10, 50);
|
|
220
|
-
|
|
221
|
-
const
|
|
322
|
+
// Split query into individual words, ignore empty spaces
|
|
323
|
+
const words = args.query.trim().split(/\s+/).filter(Boolean);
|
|
324
|
+
let sql = "SELECT * FROM memories WHERE 1=1";
|
|
325
|
+
const params = [];
|
|
326
|
+
// If there are words, add a LIKE condition for each word
|
|
327
|
+
if (words.length > 0) {
|
|
328
|
+
for (const word of words) {
|
|
329
|
+
sql += " AND content LIKE ?";
|
|
330
|
+
params.push(`%${word}%`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
// Fallback if empty query
|
|
335
|
+
sql += " AND content LIKE ?";
|
|
336
|
+
params.push(`%${args.query}%`);
|
|
337
|
+
}
|
|
222
338
|
if (args.area) {
|
|
223
339
|
sql += " AND area = ?";
|
|
224
340
|
params.push(args.area);
|
|
@@ -231,10 +347,51 @@ function fallbackSearch(args) {
|
|
|
231
347
|
params.push(limit);
|
|
232
348
|
const stmt = database.prepare(sql);
|
|
233
349
|
const rows = stmt.all(...params);
|
|
234
|
-
return rows.map((row) =>
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
350
|
+
return rows.map((row) => {
|
|
351
|
+
const memory = rowToMemory(row);
|
|
352
|
+
return {
|
|
353
|
+
id: memory.id,
|
|
354
|
+
name: memory.name,
|
|
355
|
+
area: memory.area,
|
|
356
|
+
project: memory.project,
|
|
357
|
+
tags: memory.tags,
|
|
358
|
+
metadata: memory.metadata,
|
|
359
|
+
accessed_at: memory.accessed_at,
|
|
360
|
+
access_count: memory.access_count,
|
|
361
|
+
created_at: memory.created_at,
|
|
362
|
+
updated_at: memory.updated_at,
|
|
363
|
+
score: 0.5, // Default score for fallback search
|
|
364
|
+
decay_score: calculateDecayScore(memory.created_at, memory.accessed_at ?? null, memory.access_count || 0, 0.5),
|
|
365
|
+
};
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
export function pruneMemories(args) {
|
|
369
|
+
const database = getDatabase();
|
|
370
|
+
const threshold = args.threshold_score ?? 0;
|
|
371
|
+
// We need to fetch all memories to calculate their dynamic decay score
|
|
372
|
+
const stmt = database.prepare("SELECT * FROM memories");
|
|
373
|
+
const rows = stmt.all();
|
|
374
|
+
const toPrune = [];
|
|
375
|
+
for (const row of rows) {
|
|
376
|
+
const memory = rowToMemory(row);
|
|
377
|
+
if ((memory.decay_score ?? 0) < threshold) {
|
|
378
|
+
toPrune.push({ id: memory.id, name: memory.name || null });
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
if (!args.dry_run && toPrune.length > 0) {
|
|
382
|
+
const deleteStmt = database.prepare("DELETE FROM memories WHERE id = ?");
|
|
383
|
+
const deleteMany = database.transaction((ids) => {
|
|
384
|
+
for (const id of ids) {
|
|
385
|
+
deleteStmt.run(id);
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
deleteMany(toPrune.map(p => p.id));
|
|
389
|
+
}
|
|
390
|
+
return {
|
|
391
|
+
success: true,
|
|
392
|
+
pruned_count: toPrune.length,
|
|
393
|
+
details: toPrune
|
|
394
|
+
};
|
|
238
395
|
}
|
|
239
396
|
export function closeDatabase() {
|
|
240
397
|
if (db) {
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAc7B,SAAS,cAAc,CAAC,SAAiB;IACvC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc;QACvC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1G,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;AAErE,IAAI,EAAE,GAA6B,IAAI,CAAC;AAExC,SAAS,WAAW;IAClB,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAElB,mCAAmC;IACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA2B;IACnD,wBAAwB;IACxB,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;GAUb,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAU,CAAC;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAEhF,eAAe;QACf,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;GASb,CAAC,CAAC;IAEH,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC;;;;;GAKb,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC;;;;;GAKb,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC;;;;;;;GAOb,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,uBAAuB;QACvB,QAAQ,CAAC,IAAI,CAAC;;;KAGb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,UAAyB,EACzB,WAAmB,EACnB,YAAoB,CAAC;IAErB,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAE7F,IAAI,KAAK,GAAG,SAAS,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB;IAC7D,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAK,mBAAmB;IAE/D,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,GAA4B;IAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,WAA4B,CAAC;IACpD,MAAM,WAAW,GAAI,GAAG,CAAC,YAAuB,IAAI,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAoB,CAAC;IAE3C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,IAAI,EAAE,GAAG,CAAC,IAAqB;QAC/B,OAAO,EAAE,GAAG,CAAC,OAAiB;QAC9B,IAAI,EAAG,GAAG,CAAC,IAAmB,IAAI,SAAS;QAC3C,OAAO,EAAE,GAAG,CAAC,OAAwB;QACrC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC,IAAe,IAAI,IAAI,CAAC;QAC9C,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAkB,CAAC,CAAC,CAAC,CAAC,IAAI;QAClE,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,GAAG,CAAC,UAAoB;QACpC,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;;;GAG7B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEhE,OAAO,EAAE,EAAE,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,2DAA2D;IAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,iGAAiG,CAAC,CAAC;IACvI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEnB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAwC,CAAC;IAEhE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IAED,gBAAgB;IAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;GAI7B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAoB;IAC/C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,GAAG,GAAG,kCAAkC,CAAC;IAC7C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,GAAG,IAAI,eAAe,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,GAAG,IAAI,kBAAkB,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,GAAG,IAAI,kBAAkB,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,IAAI,mCAAmC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC;IAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,KAAK,GAAI,QAAQ,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IAE5F,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,EAAW,CAAC;IAC7G,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA4B,CAAC,CAAC;IAEjC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,EAAW,CAAC;IACtH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnD,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA4B,CAAC,CAAC;IAEjC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,OAAO,KAAK,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAED,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,OAAO;QACP,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAE7C,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;QACpD,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,wCAAwC;QAC3F,mEAAmE;QACnE,kFAAkF;QAClF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3E,CAAC,CAAC;IAEF,gCAAgC;IAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErF,2BAA2B;IAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,oCAAoC;IACtC,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,GAAG;;;;;GAKT,CAAC;IACF,MAAM,MAAM,GAAwB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,GAAG,IAAI,iBAAiB,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,GAAG,IAAI,oBAAoB,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,IAAI,4BAA4B,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC;QAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAe,CAAC,IAAI,CAAC;gBACzC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAe,CAAC,IAAI,CAAC,CAAC;aAC9I,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,iEAAiE;QACjE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAE7C,yDAAyD;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE7D,IAAI,GAAG,GAAG,kCAAkC,CAAC;IAC7C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,yDAAyD;IACzD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,IAAI,qBAAqB,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,0BAA0B;QAC1B,GAAG,IAAI,qBAAqB,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,GAAG,IAAI,eAAe,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,GAAG,IAAI,kBAAkB,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,IAAI,mCAAmC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC;IAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,GAAG,EAAE,oCAAoC;YAChD,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,GAAG,CAAC;SAC/G,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAqB;IACjD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;IAE5C,uEAAuE;IACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAA+B,CAAC;IAErD,MAAM,OAAO,GAA0C,EAAE,CAAC;IAE1D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAa,EAAE,EAAE;YACxD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAElD,cAAc;AACd,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACzC,EAAE,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC7C,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC9C,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC9C,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC9C,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,10 +12,20 @@ import { schema as updateSchema, handler as updateHandler } from "./tools/update
|
|
|
12
12
|
import { schema as deleteSchema, handler as deleteHandler } from "./tools/delete.js";
|
|
13
13
|
import { schema as listSchema, handler as listHandler } from "./tools/list.js";
|
|
14
14
|
import { schema as searchSchema, handler as searchHandler } from "./tools/search.js";
|
|
15
|
+
import { schema as statsSchema, handler as statsHandler } from "./tools/stats.js";
|
|
16
|
+
import { schema as pruneSchema, handler as pruneHandler } from "./tools/prune.js";
|
|
17
|
+
import { readFileSync } from "fs";
|
|
18
|
+
import { dirname, join } from "path";
|
|
19
|
+
import { fileURLToPath } from "url";
|
|
20
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
+
const __dirname = dirname(__filename);
|
|
22
|
+
// Read version dynamically from package.json to stay in sync
|
|
23
|
+
const packageJsonPath = join(__dirname, "..", "package.json");
|
|
24
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
15
25
|
// Create MCP server
|
|
16
26
|
const server = new McpServer({
|
|
17
27
|
name: "omni-memory-mcp",
|
|
18
|
-
version: "1.0.0",
|
|
28
|
+
version: packageJson.version || "1.0.0",
|
|
19
29
|
});
|
|
20
30
|
// Register tools
|
|
21
31
|
server.tool("memory_add", "Add a memory to the universal memory store. Memories can be searched and retrieved later.", addSchema, addHandler);
|
|
@@ -24,6 +34,8 @@ server.tool("memory_update", "Update an existing memory's content, area, project
|
|
|
24
34
|
server.tool("memory_delete", "Delete a memory by its ID.", deleteSchema, deleteHandler);
|
|
25
35
|
server.tool("memory_list", "List memories with optional filters by area, project, or tag.", listSchema, listHandler);
|
|
26
36
|
server.tool("memory_search", "Full-text search across all memories using FTS5.", searchSchema, searchHandler);
|
|
37
|
+
server.tool("memory_stats", "Get statistics about the Omni Memory database, including total memories, size on disk, and counts by area and project.", statsSchema, statsHandler);
|
|
38
|
+
server.tool("memory_prune", "Cleanup decayed memories dynamically based on threshold decay score.", pruneSchema, pruneHandler);
|
|
27
39
|
// Graceful shutdown
|
|
28
40
|
process.on("SIGINT", async () => {
|
|
29
41
|
await server.close();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/add.d.ts
CHANGED
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import type { ToolCallback } from "./index.js";
|
|
6
6
|
export declare const schema: {
|
|
7
|
+
name: z.ZodOptional<z.ZodString>;
|
|
7
8
|
content: z.ZodString;
|
|
8
9
|
area: z.ZodOptional<z.ZodEnum<["general", "snippets", "solutions", "preferences"]>>;
|
|
9
10
|
project: z.ZodOptional<z.ZodString>;
|
|
10
11
|
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
11
13
|
};
|
|
12
14
|
export declare const handler: ToolCallback<typeof schema>;
|
|
13
15
|
//# sourceMappingURL=add.d.ts.map
|
package/dist/tools/add.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/tools/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/tools/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,OAAO,MAAM,CAuB/C,CAAC"}
|
package/dist/tools/add.js
CHANGED
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { addMemory } from "../database.js";
|
|
6
6
|
export const schema = {
|
|
7
|
+
name: z.string().optional().describe("Summary or title of the memory"),
|
|
7
8
|
content: z.string().describe("The content to store in memory"),
|
|
8
9
|
area: z.enum(["general", "snippets", "solutions", "preferences"]).optional().describe("Memory area (default: general)"),
|
|
9
10
|
project: z.string().optional().describe("Project identifier for organization"),
|
|
10
11
|
tags: z.array(z.string()).optional().describe("Tags for categorization"),
|
|
12
|
+
metadata: z.record(z.any()).optional().describe("Graph relationships or extra properties"),
|
|
11
13
|
};
|
|
12
|
-
export const handler = async ({ content, area, project, tags }) => {
|
|
14
|
+
export const handler = async ({ name, content, area, project, tags, metadata }) => {
|
|
13
15
|
try {
|
|
14
|
-
const result = addMemory({ content, area, project, tags });
|
|
16
|
+
const result = addMemory({ name, content, area, project, tags, metadata });
|
|
15
17
|
return {
|
|
16
18
|
content: [
|
|
17
19
|
{
|
package/dist/tools/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/tools/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9E,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/tools/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACtE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9E,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACxE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC3F,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAgC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7G,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,kCAAkC,MAAM,CAAC,EAAE,EAAE;iBACpD;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACxF;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
package/dist/tools/list.js
CHANGED
|
@@ -34,15 +34,15 @@ export const handler = async ({ area, project, tag, limit }) => {
|
|
|
34
34
|
.map((m, i) => {
|
|
35
35
|
const projectTag = m.project ? ` [${m.project}]` : "";
|
|
36
36
|
const tags = m.tags.length > 0 ? ` #${m.tags.join(" #")}` : "";
|
|
37
|
-
const
|
|
38
|
-
return `${i + 1}. [${m.area}]${projectTag}${tags}\n ID: ${m.id}\n ${
|
|
37
|
+
const title = m.name ? m.name : "Unnamed Memory";
|
|
38
|
+
return `${i + 1}. [${m.area}]${projectTag}${tags}\n ID: ${m.id}\n Name: ${title}\n Accessed: ${m.accessed_at || 'Never'} (${m.access_count} times)`;
|
|
39
39
|
})
|
|
40
40
|
.join("\n\n");
|
|
41
41
|
return {
|
|
42
42
|
content: [
|
|
43
43
|
{
|
|
44
44
|
type: "text",
|
|
45
|
-
text:
|
|
45
|
+
text: `Found ${memories.length} memories. Use 'memory_get' to read full content.\n\n${memoriesText}`,
|
|
46
46
|
},
|
|
47
47
|
],
|
|
48
48
|
};
|
package/dist/tools/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACvG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;CAC7F,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAgC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACvC,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;YAChD,IAAI,GAAG;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,oBAAoB,UAAU,EAAE;qBACvC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory_prune tool - Cleanup decayed memories
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import type { ToolCallback } from "./index.js";
|
|
6
|
+
export declare const schema: {
|
|
7
|
+
threshold_score: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
dry_run: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
};
|
|
10
|
+
export declare const handler: ToolCallback<typeof schema>;
|
|
11
|
+
//# sourceMappingURL=prune.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../src/tools/prune.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,OAAO,MAAM,CAuB/C,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory_prune tool - Cleanup decayed memories
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { pruneMemories } from "../database.js";
|
|
6
|
+
export const schema = {
|
|
7
|
+
threshold_score: z.number().optional().describe("Score threshold below which memories are pruned (default 0)"),
|
|
8
|
+
dry_run: z.boolean().optional().describe("If true, calculates which memories would be pruned without deleting them"),
|
|
9
|
+
};
|
|
10
|
+
export const handler = async ({ threshold_score, dry_run }) => {
|
|
11
|
+
try {
|
|
12
|
+
const result = pruneMemories({ threshold_score, dry_run });
|
|
13
|
+
return {
|
|
14
|
+
content: [
|
|
15
|
+
{
|
|
16
|
+
type: "text",
|
|
17
|
+
text: JSON.stringify(result, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: "text",
|
|
27
|
+
text: `Failed to prune memories: ${error instanceof Error ? error.message : String(error)}`,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
isError: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=prune.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune.js","sourceRoot":"","sources":["../../src/tools/prune.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IAC9G,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;CACvH,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAgC,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;IACvF,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;QAE3D,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC;aACJ;SACJ,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC9F;aACJ;YACD,OAAO,EAAE,IAAI;SAChB,CAAC;IACN,CAAC;AACL,CAAC,CAAC"}
|
package/dist/tools/search.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const schema: {
|
|
|
8
8
|
area: z.ZodOptional<z.ZodEnum<["general", "snippets", "solutions", "preferences"]>>;
|
|
9
9
|
project: z.ZodOptional<z.ZodString>;
|
|
10
10
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
enableAdvancedSyntax: z.ZodOptional<z.ZodBoolean>;
|
|
11
12
|
};
|
|
12
13
|
export declare const handler: ToolCallback<typeof schema>;
|
|
13
14
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,OAAO,MAAM,CA4C/C,CAAC"}
|
package/dist/tools/search.js
CHANGED
|
@@ -8,10 +8,11 @@ export const schema = {
|
|
|
8
8
|
area: z.enum(["general", "snippets", "solutions", "preferences"]).optional().describe("Filter by area"),
|
|
9
9
|
project: z.string().optional().describe("Filter by project"),
|
|
10
10
|
limit: z.number().min(1).max(50).optional().describe("Max results (default: 10, max: 50)"),
|
|
11
|
+
enableAdvancedSyntax: z.boolean().optional().describe("Enable FTS5 boolean and wildcard advanced syntax"),
|
|
11
12
|
};
|
|
12
|
-
export const handler = async ({ query, area, project, limit }) => {
|
|
13
|
+
export const handler = async ({ query, area, project, limit, enableAdvancedSyntax }) => {
|
|
13
14
|
try {
|
|
14
|
-
const results = searchMemories({ query, area, project, limit });
|
|
15
|
+
const results = searchMemories({ query, area, project, limit, enableAdvancedSyntax });
|
|
15
16
|
if (results.length === 0) {
|
|
16
17
|
return {
|
|
17
18
|
content: [
|
|
@@ -26,15 +27,16 @@ export const handler = async ({ query, area, project, limit }) => {
|
|
|
26
27
|
.map((m, i) => {
|
|
27
28
|
const score = `(${(m.score * 100).toFixed(0)}%)`;
|
|
28
29
|
const projectTag = m.project ? ` [${m.project}]` : "";
|
|
29
|
-
const
|
|
30
|
-
|
|
30
|
+
const title = m.name ? m.name : "Unnamed Memory";
|
|
31
|
+
const tags = m.tags && m.tags.length ? ` {Tags: ${m.tags.join(',')}}` : "";
|
|
32
|
+
return `${i + 1}. ${score} [${m.area}]${projectTag}\n ID: ${m.id}\n Name: ${title}${tags}\n Accessed: ${m.accessed_at || 'Never'} (${m.access_count} times)`;
|
|
31
33
|
})
|
|
32
34
|
.join("\n\n");
|
|
33
35
|
return {
|
|
34
36
|
content: [
|
|
35
37
|
{
|
|
36
38
|
type: "text",
|
|
37
|
-
text: `Found ${results.length} memories for "${query}"
|
|
39
|
+
text: `Found ${results.length} memories for "${query}".\nNote: To read the full content of a memory, use 'memory_get' with the ID.\n\n${resultsText}`,
|
|
38
40
|
},
|
|
39
41
|
],
|
|
40
42
|
};
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACvG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM,IAAK,CAAC;AAEzB,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,OAAO,MAAM,CAiD/C,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory_stats tool - Get statistics about the Omni Memory database
|
|
3
|
+
*/
|
|
4
|
+
import { getStats } from "../database.js";
|
|
5
|
+
export const schema = {};
|
|
6
|
+
export const handler = async () => {
|
|
7
|
+
try {
|
|
8
|
+
const stats = getStats();
|
|
9
|
+
const formatBytes = (bytes) => {
|
|
10
|
+
if (bytes === 0)
|
|
11
|
+
return "0 Bytes";
|
|
12
|
+
const k = 1024;
|
|
13
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
14
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
15
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
|
|
16
|
+
};
|
|
17
|
+
const areasList = Object.entries(stats.by_area)
|
|
18
|
+
.map(([area, count]) => ` - ${area}: ${count}`)
|
|
19
|
+
.join("\n");
|
|
20
|
+
const projectsList = Object.entries(stats.by_project)
|
|
21
|
+
.map(([project, count]) => ` - ${project}: ${count}`)
|
|
22
|
+
.join("\n");
|
|
23
|
+
const text = `Omni Memory Database Statistics:
|
|
24
|
+
Total Memories: ${stats.total_memories}
|
|
25
|
+
Total Size on Disk: ${stats.total_size_bytes > 0 ? formatBytes(stats.total_size_bytes) : "Unknown (Memory DB)"}
|
|
26
|
+
|
|
27
|
+
By Area:
|
|
28
|
+
${areasList || " (None)"}
|
|
29
|
+
|
|
30
|
+
By Project:
|
|
31
|
+
${projectsList || " (None)"}`;
|
|
32
|
+
return {
|
|
33
|
+
content: [
|
|
34
|
+
{
|
|
35
|
+
type: "text",
|
|
36
|
+
text,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
content: [
|
|
44
|
+
{
|
|
45
|
+
type: "text",
|
|
46
|
+
text: `Failed to retrieve stats: ${error instanceof Error ? error.message : String(error)}`,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
isError: true,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAgC,KAAK,IAAI,EAAE;IAC3D,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YAClC,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAClC,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;aAChD,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,KAAK,EAAE,CAAC;aACrD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,MAAM,IAAI,GAAG;kBACH,KAAK,CAAC,cAAc;sBAChB,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,qBAAqB;;;EAG5G,SAAS,IAAI,UAAU;;;EAGvB,YAAY,IAAI,UAAU,EAAE,CAAC;QAEvB,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAe;oBACrB,IAAI;iBACP;aACJ;SACJ,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC9F;aACJ;YACD,OAAO,EAAE,IAAI;SAChB,CAAC;IACN,CAAC;AACL,CAAC,CAAC"}
|
package/dist/tools/update.d.ts
CHANGED
|
@@ -5,10 +5,12 @@ import { z } from "zod";
|
|
|
5
5
|
import type { ToolCallback } from "./index.js";
|
|
6
6
|
export declare const schema: {
|
|
7
7
|
id: z.ZodString;
|
|
8
|
+
name: z.ZodOptional<z.ZodString>;
|
|
8
9
|
content: z.ZodOptional<z.ZodString>;
|
|
9
10
|
area: z.ZodOptional<z.ZodEnum<["general", "snippets", "solutions", "preferences"]>>;
|
|
10
11
|
project: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
11
12
|
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
|
+
metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
12
14
|
};
|
|
13
15
|
export declare const handler: ToolCallback<typeof schema>;
|
|
14
16
|
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,MAAM;;;;;;;;CAQlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,OAAO,MAAM,CAgD/C,CAAC"}
|
package/dist/tools/update.js
CHANGED
|
@@ -5,12 +5,14 @@ import { z } from "zod";
|
|
|
5
5
|
import { updateMemory, getMemory } from "../database.js";
|
|
6
6
|
export const schema = {
|
|
7
7
|
id: z.string().describe("The memory ID to update"),
|
|
8
|
+
name: z.string().optional().describe("New summary or title (optional)"),
|
|
8
9
|
content: z.string().optional().describe("New content (optional)"),
|
|
9
10
|
area: z.enum(["general", "snippets", "solutions", "preferences"]).optional().describe("New area (optional)"),
|
|
10
11
|
project: z.string().nullable().optional().describe("New project (optional, null to clear)"),
|
|
11
12
|
tags: z.array(z.string()).optional().describe("New tags (optional)"),
|
|
13
|
+
metadata: z.record(z.any()).nullable().optional().describe("New metadata (optional, null to clear)"),
|
|
12
14
|
};
|
|
13
|
-
export const handler = async ({ id, content, area, project, tags }) => {
|
|
15
|
+
export const handler = async ({ id, name, content, area, project, tags, metadata }) => {
|
|
14
16
|
try {
|
|
15
17
|
// Check if memory exists
|
|
16
18
|
const existing = getMemory(id);
|
|
@@ -25,7 +27,7 @@ export const handler = async ({ id, content, area, project, tags }) => {
|
|
|
25
27
|
isError: true,
|
|
26
28
|
};
|
|
27
29
|
}
|
|
28
|
-
const result = updateMemory({ id, content, area, project: project ?? undefined, tags });
|
|
30
|
+
const result = updateMemory({ id, name, content, area, project: project ?? undefined, tags, metadata: metadata ?? undefined });
|
|
29
31
|
if (result.changes === 0) {
|
|
30
32
|
return {
|
|
31
33
|
content: [
|
package/dist/tools/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGzD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACjE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC5G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC3F,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/tools/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGzD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACjE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC5G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC3F,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACpE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CACrG,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAgC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjH,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qBAAqB,EAAE,EAAE;qBAChC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;QAE/H,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8BAA8B,EAAE,EAAE;qBACzC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,oCAAoC,EAAE,cAAc,MAAM,CAAC,OAAO,EAAE;iBAC3E;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC3F;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,28 +4,37 @@
|
|
|
4
4
|
export type MemoryArea = "general" | "snippets" | "solutions" | "preferences";
|
|
5
5
|
export interface Memory {
|
|
6
6
|
id: string;
|
|
7
|
+
name?: string | null;
|
|
7
8
|
content: string;
|
|
8
9
|
area: MemoryArea;
|
|
9
10
|
project: string | null;
|
|
10
11
|
tags: string[];
|
|
12
|
+
metadata?: Record<string, any> | null;
|
|
13
|
+
accessed_at?: string | null;
|
|
14
|
+
access_count?: number;
|
|
11
15
|
created_at: string;
|
|
12
16
|
updated_at: string;
|
|
17
|
+
decay_score?: number;
|
|
13
18
|
}
|
|
14
19
|
export interface AddMemoryArgs {
|
|
20
|
+
name?: string;
|
|
15
21
|
content: string;
|
|
16
22
|
area?: MemoryArea;
|
|
17
23
|
project?: string;
|
|
18
24
|
tags?: string[];
|
|
25
|
+
metadata?: Record<string, any>;
|
|
19
26
|
}
|
|
20
27
|
export interface GetMemoryArgs {
|
|
21
28
|
id: string;
|
|
22
29
|
}
|
|
23
30
|
export interface UpdateMemoryArgs {
|
|
24
31
|
id: string;
|
|
32
|
+
name?: string;
|
|
25
33
|
content?: string;
|
|
26
34
|
area?: MemoryArea;
|
|
27
35
|
project?: string;
|
|
28
36
|
tags?: string[];
|
|
37
|
+
metadata?: Record<string, any>;
|
|
29
38
|
}
|
|
30
39
|
export interface DeleteMemoryArgs {
|
|
31
40
|
id: string;
|
|
@@ -41,9 +50,30 @@ export interface SearchMemoryArgs {
|
|
|
41
50
|
area?: MemoryArea;
|
|
42
51
|
project?: string;
|
|
43
52
|
limit?: number;
|
|
53
|
+
enableAdvancedSyntax?: boolean;
|
|
44
54
|
}
|
|
45
|
-
export interface SearchResult extends Memory {
|
|
55
|
+
export interface SearchResult extends Omit<Memory, "content"> {
|
|
56
|
+
content?: string;
|
|
46
57
|
score: number;
|
|
58
|
+
decay_score: number;
|
|
59
|
+
}
|
|
60
|
+
export interface MemoryStats {
|
|
61
|
+
total_memories: number;
|
|
62
|
+
by_area: Record<string, number>;
|
|
63
|
+
by_project: Record<string, number>;
|
|
64
|
+
total_size_bytes: number;
|
|
65
|
+
}
|
|
66
|
+
export interface PruneMemoryArgs {
|
|
67
|
+
threshold_score?: number;
|
|
68
|
+
dry_run?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface PruneMemoryResult {
|
|
71
|
+
success: boolean;
|
|
72
|
+
pruned_count: number;
|
|
73
|
+
details?: {
|
|
74
|
+
id: string;
|
|
75
|
+
name: string | null;
|
|
76
|
+
}[];
|
|
47
77
|
}
|
|
48
78
|
export interface AddMemoryResult {
|
|
49
79
|
success: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AAE9E,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sharkdyt/omni-memory-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Universal memory MCP server for multi-agent AI workflows. 100% local with SQLite + FTS5.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -65,4 +65,4 @@
|
|
|
65
65
|
"publishConfig": {
|
|
66
66
|
"access": "public"
|
|
67
67
|
}
|
|
68
|
-
}
|
|
68
|
+
}
|