@mnemo-mcp/core 1.0.1 → 1.1.1
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/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/ingest.d.ts +20 -0
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +73 -0
- package/dist/ingest.js.map +1 -0
- package/dist/mnemo.d.ts +16 -0
- package/dist/mnemo.d.ts.map +1 -1
- package/dist/mnemo.js +38 -1
- package/dist/mnemo.js.map +1 -1
- package/dist/secret-guard.d.ts +13 -0
- package/dist/secret-guard.d.ts.map +1 -0
- package/dist/secret-guard.js +38 -0
- package/dist/secret-guard.js.map +1 -0
- package/dist/store.d.ts +4 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +34 -9
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +18 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -1
- package/dist/types.js.map +1 -1
- package/dist/vector-index.d.ts.map +1 -1
- package/dist/vector-index.js +16 -1
- package/dist/vector-index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.1.0";
|
|
2
2
|
export * from './types.js';
|
|
3
|
-
export { Mnemo } from './mnemo.js';
|
|
3
|
+
export { Mnemo, SecretContentError } from './mnemo.js';
|
|
4
4
|
export { HashEmbedder } from './embedder.js';
|
|
5
5
|
export type { Embedder } from './embedder.js';
|
|
6
6
|
export { resolveDataDir, projectHashOf, paths } from './paths.js';
|
|
7
7
|
export { parseDuration, expiresAtFromTtl, sinceFromAgo } from './duration.js';
|
|
8
|
+
export { detectSecrets, hasSecrets } from './secret-guard.js';
|
|
9
|
+
export type { SecretMatch } from './secret-guard.js';
|
|
10
|
+
export { parseMarkdown, parsePlain } from './ingest.js';
|
|
11
|
+
export type { IngestChunk } from './ingest.js';
|
|
8
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export const VERSION = '1.
|
|
1
|
+
export const VERSION = '1.1.0';
|
|
2
2
|
export * from './types.js';
|
|
3
|
-
export { Mnemo } from './mnemo.js';
|
|
3
|
+
export { Mnemo, SecretContentError } from './mnemo.js';
|
|
4
4
|
export { HashEmbedder } from './embedder.js';
|
|
5
5
|
export { resolveDataDir, projectHashOf, paths } from './paths.js';
|
|
6
6
|
export { parseDuration, expiresAtFromTtl, sinceFromAgo } from './duration.js';
|
|
7
|
+
export { detectSecrets, hasSecrets } from './secret-guard.js';
|
|
8
|
+
export { parseMarkdown, parsePlain } from './ingest.js';
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/ingest.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MemoryChannel } from './types.js';
|
|
2
|
+
export type IngestChunk = {
|
|
3
|
+
content: string;
|
|
4
|
+
/** Inferred channel based on heading text or content. */
|
|
5
|
+
channel: MemoryChannel | null;
|
|
6
|
+
/** Heading path that produced this chunk, if any. */
|
|
7
|
+
heading?: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Parse markdown into ingestible chunks. Splits on:
|
|
11
|
+
* - Top-level (#) and second-level (##) headings → boundaries
|
|
12
|
+
* - Bullet lists → each bullet becomes a chunk if standalone
|
|
13
|
+
* - Otherwise falls back to paragraph (double-newline) splits.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseMarkdown(md: string): IngestChunk[];
|
|
16
|
+
/**
|
|
17
|
+
* Parse plain text. Splits on blank lines. Useful for non-markdown sources.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parsePlain(text: string): IngestChunk[];
|
|
20
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAkBF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,EAAE,CAsCvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAMtD"}
|
package/dist/ingest.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const CHANNEL_HINTS = [
|
|
2
|
+
// Order matters: more specific phrases checked first.
|
|
3
|
+
{ re: /\b(anti-?pattern|never do|avoid)\b/i, channel: 'anti-pattern' },
|
|
4
|
+
{ re: /\b(gotcha|warning|careful|caveat|beware|watch out)\b/i, channel: 'gotcha' },
|
|
5
|
+
{ re: /\b(decision|adr|chose to|decided to)\b/i, channel: 'decision' },
|
|
6
|
+
{ re: /\b(todo|fixme|hack|note to self)\b/i, channel: 'todo' },
|
|
7
|
+
{ re: /\b(convention|always use|prefer|standard|style)\b/i, channel: 'convention' },
|
|
8
|
+
];
|
|
9
|
+
function inferChannel(content) {
|
|
10
|
+
for (const { re, channel } of CHANNEL_HINTS) {
|
|
11
|
+
if (re.test(content))
|
|
12
|
+
return channel;
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse markdown into ingestible chunks. Splits on:
|
|
18
|
+
* - Top-level (#) and second-level (##) headings → boundaries
|
|
19
|
+
* - Bullet lists → each bullet becomes a chunk if standalone
|
|
20
|
+
* - Otherwise falls back to paragraph (double-newline) splits.
|
|
21
|
+
*/
|
|
22
|
+
export function parseMarkdown(md) {
|
|
23
|
+
const lines = md.split(/\r?\n/);
|
|
24
|
+
const chunks = [];
|
|
25
|
+
let buf = [];
|
|
26
|
+
let heading;
|
|
27
|
+
const flush = () => {
|
|
28
|
+
const text = buf.join('\n').trim();
|
|
29
|
+
buf = [];
|
|
30
|
+
if (!text)
|
|
31
|
+
return;
|
|
32
|
+
// Split into paragraph chunks
|
|
33
|
+
const paras = text.split(/\n{2,}/);
|
|
34
|
+
for (const p of paras) {
|
|
35
|
+
const t = p.trim();
|
|
36
|
+
if (!t)
|
|
37
|
+
continue;
|
|
38
|
+
if (/^[-*+]\s/.test(t.split('\n')[0])) {
|
|
39
|
+
// Bulleted block — split each bullet into its own chunk
|
|
40
|
+
for (const line of t.split(/\n(?=[-*+]\s)/)) {
|
|
41
|
+
const item = line.replace(/^[-*+]\s+/, '').trim();
|
|
42
|
+
if (item.length >= 8)
|
|
43
|
+
chunks.push({ content: item, channel: inferChannel(item), heading });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (t.length >= 8) {
|
|
47
|
+
chunks.push({ content: t, channel: inferChannel(t), heading });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
for (const line of lines) {
|
|
52
|
+
const m = /^(#{1,3})\s+(.*)$/.exec(line);
|
|
53
|
+
if (m) {
|
|
54
|
+
flush();
|
|
55
|
+
heading = m[2].trim();
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
buf.push(line);
|
|
59
|
+
}
|
|
60
|
+
flush();
|
|
61
|
+
return chunks;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse plain text. Splits on blank lines. Useful for non-markdown sources.
|
|
65
|
+
*/
|
|
66
|
+
export function parsePlain(text) {
|
|
67
|
+
return text
|
|
68
|
+
.split(/\n{2,}/)
|
|
69
|
+
.map(p => p.trim())
|
|
70
|
+
.filter(p => p.length >= 8)
|
|
71
|
+
.map(p => ({ content: p, channel: inferChannel(p) }));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
|
package/dist/mnemo.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { CaptureInput, ListFilter, MemoryHit, MemoryRecord, MnemoOpts, MnemoStats, PruneOpts, PruneResult, RecallOpts, UpdateInput } from './types.js';
|
|
2
|
+
import { detectSecrets } from './secret-guard.js';
|
|
3
|
+
export declare class SecretContentError extends Error {
|
|
4
|
+
matches: ReturnType<typeof detectSecrets>;
|
|
5
|
+
constructor(matches: ReturnType<typeof detectSecrets>);
|
|
6
|
+
}
|
|
2
7
|
export declare class Mnemo {
|
|
3
8
|
private store;
|
|
4
9
|
private index;
|
|
@@ -16,6 +21,17 @@ export declare class Mnemo {
|
|
|
16
21
|
stats(): Promise<MnemoStats>;
|
|
17
22
|
export(): Promise<MemoryRecord[]>;
|
|
18
23
|
import(records: MemoryRecord[]): Promise<void>;
|
|
24
|
+
/** Compute ranking score breakdown for a hit. Used by `mnemo why`. */
|
|
25
|
+
scoreBreakdown(similarity: number, rec: MemoryRecord): {
|
|
26
|
+
similarity: number;
|
|
27
|
+
recency: number;
|
|
28
|
+
accessBoost: number;
|
|
29
|
+
composite: number;
|
|
30
|
+
};
|
|
31
|
+
/** Memories that have never been recalled. Useful for `mnemo dead`. */
|
|
32
|
+
dead(opts?: {
|
|
33
|
+
olderThanDays?: number;
|
|
34
|
+
}): Promise<MemoryRecord[]>;
|
|
19
35
|
prune(opts?: PruneOpts): Promise<PruneResult>;
|
|
20
36
|
close(): Promise<void>;
|
|
21
37
|
}
|
package/dist/mnemo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemo.d.ts","sourceRoot":"","sources":["../src/mnemo.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mnemo.d.ts","sourceRoot":"","sources":["../src/mnemo.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,OAAO,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC;gBAAzC,OAAO,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC;CAI7D;AAGD,qBAAa,KAAK;IAEd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IAJjB,OAAO;WAOM,IAAI,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAiCvD,uGAAuG;IACvG,kBAAkB,UAAS;IAErB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAwDnD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAgClE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAWrE,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAItD,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAmB5B,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIjC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD,sEAAsE;IACtE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG;QACrD,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB;IASD,uEAAuE;IACjE,IAAI,CAAC,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMpE,KAAK,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAqEjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
package/dist/mnemo.js
CHANGED
|
@@ -4,6 +4,15 @@ import { VectorIndex } from './vector-index.js';
|
|
|
4
4
|
import { HashEmbedder } from './embedder.js';
|
|
5
5
|
import { score } from './ranker.js';
|
|
6
6
|
import { paths, resolveDataDir } from './paths.js';
|
|
7
|
+
import { detectSecrets } from './secret-guard.js';
|
|
8
|
+
export class SecretContentError extends Error {
|
|
9
|
+
matches;
|
|
10
|
+
constructor(matches) {
|
|
11
|
+
super(`refusing to capture: detected ${matches.length} secret(s) (${matches.map(m => m.kind).join(', ')}). Pass allowSensitive: true to override.`);
|
|
12
|
+
this.matches = matches;
|
|
13
|
+
this.name = 'SecretContentError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
7
16
|
import { stat } from 'node:fs/promises';
|
|
8
17
|
export class Mnemo {
|
|
9
18
|
store;
|
|
@@ -48,6 +57,11 @@ export class Mnemo {
|
|
|
48
57
|
/** True when the most recent `capture()` updated an existing memory instead of inserting a new one. */
|
|
49
58
|
lastCaptureDeduped = false;
|
|
50
59
|
async capture(input) {
|
|
60
|
+
if (!input.allowSensitive) {
|
|
61
|
+
const matches = detectSecrets(input.content);
|
|
62
|
+
if (matches.length > 0)
|
|
63
|
+
throw new SecretContentError(matches);
|
|
64
|
+
}
|
|
51
65
|
const dedupThreshold = input.dedupThreshold ?? 0.95;
|
|
52
66
|
const v = await this.embedder.embed(input.content);
|
|
53
67
|
this.lastCaptureDeduped = false;
|
|
@@ -67,6 +81,7 @@ export class Mnemo {
|
|
|
67
81
|
content: input.content,
|
|
68
82
|
tags: dedupeTags([...(existing.tags ?? []), ...(input.tags ?? [])]),
|
|
69
83
|
expiresAt: input.expiresAt !== undefined ? input.expiresAt : existing.expiresAt,
|
|
84
|
+
channel: input.channel !== undefined ? input.channel : existing.channel,
|
|
70
85
|
});
|
|
71
86
|
if (updated) {
|
|
72
87
|
const v2 = await this.embedder.embed(updated.content);
|
|
@@ -79,7 +94,7 @@ export class Mnemo {
|
|
|
79
94
|
}
|
|
80
95
|
const now = Date.now();
|
|
81
96
|
const rec = {
|
|
82
|
-
id: randomUUID(),
|
|
97
|
+
id: input.id ?? randomUUID(),
|
|
83
98
|
scope: input.scope ?? 'project',
|
|
84
99
|
projectHash: input.projectHash ?? null,
|
|
85
100
|
source: input.source ?? 'manual',
|
|
@@ -90,6 +105,7 @@ export class Mnemo {
|
|
|
90
105
|
accessCount: 0,
|
|
91
106
|
lastAccessedAt: now,
|
|
92
107
|
expiresAt: input.expiresAt ?? null,
|
|
108
|
+
channel: input.channel ?? null,
|
|
93
109
|
};
|
|
94
110
|
await this.store.upsert(rec);
|
|
95
111
|
await this.index.add(rec.id, v);
|
|
@@ -103,6 +119,7 @@ export class Mnemo {
|
|
|
103
119
|
const candidates = await this.index.query(v, Math.max(k * 4, 20));
|
|
104
120
|
const requiredTags = opts.tags ?? [];
|
|
105
121
|
const sources = opts.source ? (Array.isArray(opts.source) ? opts.source : [opts.source]) : null;
|
|
122
|
+
const channels = opts.channel ? (Array.isArray(opts.channel) ? opts.channel : [opts.channel]) : null;
|
|
106
123
|
const since = opts.since ?? 0;
|
|
107
124
|
const now = Date.now();
|
|
108
125
|
const out = [];
|
|
@@ -120,6 +137,8 @@ export class Mnemo {
|
|
|
120
137
|
continue;
|
|
121
138
|
if (sources && !sources.includes(rec.source))
|
|
122
139
|
continue;
|
|
140
|
+
if (channels && (!rec.channel || !channels.includes(rec.channel)))
|
|
141
|
+
continue;
|
|
123
142
|
if (requiredTags.length && !requiredTags.every(t => rec.tags.includes(t)))
|
|
124
143
|
continue;
|
|
125
144
|
const s = score(cand.similarity, rec);
|
|
@@ -163,10 +182,12 @@ export class Mnemo {
|
|
|
163
182
|
return {
|
|
164
183
|
totalMemories: counts.total,
|
|
165
184
|
byScope: counts.byScope,
|
|
185
|
+
byChannel: counts.byChannel,
|
|
166
186
|
indexSize: this.index.size(),
|
|
167
187
|
embeddingDimension: this.embedder.dimension,
|
|
168
188
|
storageBytes,
|
|
169
189
|
expired: counts.expired,
|
|
190
|
+
neverRecalled: counts.neverRecalled,
|
|
170
191
|
};
|
|
171
192
|
}
|
|
172
193
|
async export() {
|
|
@@ -178,12 +199,28 @@ export class Mnemo {
|
|
|
178
199
|
...rec,
|
|
179
200
|
source: 'imported',
|
|
180
201
|
expiresAt: rec.expiresAt ?? null,
|
|
202
|
+
channel: rec.channel ?? null,
|
|
181
203
|
});
|
|
182
204
|
const v = await this.embedder.embed(rec.content);
|
|
183
205
|
await this.index.add(rec.id, v);
|
|
184
206
|
}
|
|
185
207
|
await this.index.save();
|
|
186
208
|
}
|
|
209
|
+
/** Compute ranking score breakdown for a hit. Used by `mnemo why`. */
|
|
210
|
+
scoreBreakdown(similarity, rec) {
|
|
211
|
+
const now = Date.now();
|
|
212
|
+
const ageDays = Math.max(0, (now - rec.lastAccessedAt) / 86400_000);
|
|
213
|
+
const recency = Math.exp(-ageDays / 30);
|
|
214
|
+
const accessBoost = Math.min(1, rec.accessCount / 20);
|
|
215
|
+
const composite = score(similarity, rec);
|
|
216
|
+
return { similarity, recency, accessBoost, composite };
|
|
217
|
+
}
|
|
218
|
+
/** Memories that have never been recalled. Useful for `mnemo dead`. */
|
|
219
|
+
async dead(opts = {}) {
|
|
220
|
+
const all = await this.store.list({ includeExpired: true });
|
|
221
|
+
const cutoff = opts.olderThanDays ? Date.now() - opts.olderThanDays * 86400_000 : Infinity;
|
|
222
|
+
return all.filter(r => r.accessCount === 0 && r.createdAt < cutoff);
|
|
223
|
+
}
|
|
187
224
|
async prune(opts = {}) {
|
|
188
225
|
const expiredOn = opts.expired !== false;
|
|
189
226
|
const dupThr = opts.duplicateThreshold ?? 0.97;
|
package/dist/mnemo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemo.js","sourceRoot":"","sources":["../src/mnemo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mnemo.js","sourceRoot":"","sources":["../src/mnemo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects obvious secrets in proposed memory content. Conservative — favors
|
|
3
|
+
* letting things through over false positives. The goal is to prevent the
|
|
4
|
+
* "Mnemo just stored my GitHub token" failure mode.
|
|
5
|
+
*/
|
|
6
|
+
export type SecretMatch = {
|
|
7
|
+
kind: string;
|
|
8
|
+
/** Redacted snippet showing the match without leaking the secret. */
|
|
9
|
+
preview: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function detectSecrets(content: string): SecretMatch[];
|
|
12
|
+
export declare function hasSecrets(content: string): boolean;
|
|
13
|
+
//# sourceMappingURL=secret-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-guard.d.ts","sourceRoot":"","sources":["../src/secret-guard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAkBF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAO5D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects obvious secrets in proposed memory content. Conservative — favors
|
|
3
|
+
* letting things through over false positives. The goal is to prevent the
|
|
4
|
+
* "Mnemo just stored my GitHub token" failure mode.
|
|
5
|
+
*/
|
|
6
|
+
const PATTERNS = [
|
|
7
|
+
{ kind: 'github-token-classic', re: /\bghp_[A-Za-z0-9]{36,}\b/ },
|
|
8
|
+
{ kind: 'github-token-fine', re: /\bgithub_pat_[A-Za-z0-9_]{60,}\b/ },
|
|
9
|
+
{ kind: 'github-oauth', re: /\bgho_[A-Za-z0-9]{36,}\b/ },
|
|
10
|
+
{ kind: 'npm-token', re: /\bnpm_[A-Za-z0-9]{36,}\b/ },
|
|
11
|
+
{ kind: 'aws-access-key', re: /\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/ },
|
|
12
|
+
{ kind: 'aws-secret-key', re: /\b[A-Za-z0-9/+=]{40}\b(?=.*aws|.*secret)/i },
|
|
13
|
+
{ kind: 'openai-key', re: /\bsk-(?:proj-)?[A-Za-z0-9_-]{20,}\b/ },
|
|
14
|
+
{ kind: 'anthropic-key', re: /\bsk-ant-(?:api03-|admin01-)?[A-Za-z0-9_-]{30,}\b/ },
|
|
15
|
+
{ kind: 'google-api-key', re: /\bAIza[0-9A-Za-z_-]{35}\b/ },
|
|
16
|
+
{ kind: 'slack-token', re: /\bxox[abprs]-[A-Za-z0-9-]{10,}\b/ },
|
|
17
|
+
{ kind: 'stripe-key', re: /\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{24,}\b/ },
|
|
18
|
+
{ kind: 'jwt', re: /\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]{10,}\b/ },
|
|
19
|
+
{ kind: 'private-key-block', re: /-----BEGIN (?:RSA |EC |OPENSSH |PGP )?PRIVATE KEY-----/ },
|
|
20
|
+
];
|
|
21
|
+
export function detectSecrets(content) {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const { kind, re } of PATTERNS) {
|
|
24
|
+
const m = re.exec(content);
|
|
25
|
+
if (m)
|
|
26
|
+
out.push({ kind, preview: redact(m[0]) });
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
export function hasSecrets(content) {
|
|
31
|
+
return detectSecrets(content).length > 0;
|
|
32
|
+
}
|
|
33
|
+
function redact(s) {
|
|
34
|
+
if (s.length <= 8)
|
|
35
|
+
return '*'.repeat(s.length);
|
|
36
|
+
return s.slice(0, 4) + '…' + '*'.repeat(Math.min(8, s.length - 8)) + '…' + s.slice(-2);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=secret-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-guard.js","sourceRoot":"","sources":["../src/secret-guard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,QAAQ,GAAwC;IACpD,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,0BAA0B,EAAE;IAChE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,kCAAkC,EAAE;IACrE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,0BAA0B,EAAE;IACxD,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,0BAA0B,EAAE;IACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,+BAA+B,EAAE;IAC/D,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,2CAA2C,EAAE;IAC3E,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,qCAAqC,EAAE;IACjE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,mDAAmD,EAAE;IAClF,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,2BAA2B,EAAE;IAC3D,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,kCAAkC,EAAE;IAC/D,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,iDAAiD,EAAE;IAC7E,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,8DAA8D,EAAE;IACnF,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,wDAAwD,EAAE;CAC5F,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC"}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type { MemoryRecord, MemoryScope, MemorySource, UpdateInput } from './types.js';
|
|
1
|
+
import type { MemoryChannel, MemoryRecord, MemoryScope, MemorySource, UpdateInput } from './types.js';
|
|
2
2
|
export type StoreCounts = {
|
|
3
3
|
total: number;
|
|
4
4
|
byScope: Record<MemoryScope, number>;
|
|
5
|
+
byChannel: Record<string, number>;
|
|
5
6
|
expired: number;
|
|
7
|
+
neverRecalled: number;
|
|
6
8
|
};
|
|
7
9
|
export type StoreListFilter = {
|
|
8
10
|
scope?: MemoryScope;
|
|
9
11
|
projectHash?: string | null;
|
|
10
12
|
source?: MemorySource | MemorySource[];
|
|
13
|
+
channel?: MemoryChannel | MemoryChannel[];
|
|
11
14
|
tags?: string[];
|
|
12
15
|
limit?: number;
|
|
13
16
|
since?: number;
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuBtG,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAsCF,qBAAa,KAAK;IAEd,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;IAFd,OAAO;WAKM,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAqBzC,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCxC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiBrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAY7C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,IAAI,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8C3D,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IA6B7B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,OAAO;CAgBhB"}
|
package/dist/store.js
CHANGED
|
@@ -16,11 +16,13 @@ CREATE TABLE IF NOT EXISTS memories (
|
|
|
16
16
|
updated_at INTEGER NOT NULL,
|
|
17
17
|
access_count INTEGER NOT NULL DEFAULT 0,
|
|
18
18
|
last_accessed_at INTEGER NOT NULL,
|
|
19
|
-
expires_at INTEGER
|
|
19
|
+
expires_at INTEGER,
|
|
20
|
+
channel TEXT
|
|
20
21
|
);
|
|
21
22
|
CREATE INDEX IF NOT EXISTS idx_scope_project ON memories(scope, project_hash);
|
|
22
23
|
CREATE INDEX IF NOT EXISTS idx_updated ON memories(updated_at);
|
|
23
24
|
CREATE INDEX IF NOT EXISTS idx_expires ON memories(expires_at);
|
|
25
|
+
CREATE INDEX IF NOT EXISTS idx_channel ON memories(channel);
|
|
24
26
|
`;
|
|
25
27
|
let cachedSqlPromise = null;
|
|
26
28
|
function locateSqlAsset(file) {
|
|
@@ -79,13 +81,15 @@ export class Store {
|
|
|
79
81
|
isFresh = true;
|
|
80
82
|
}
|
|
81
83
|
db.exec(SCHEMA);
|
|
82
|
-
// Best-effort
|
|
84
|
+
// Best-effort migrations for legacy dbs:
|
|
83
85
|
try {
|
|
84
86
|
db.exec('ALTER TABLE memories ADD COLUMN expires_at INTEGER');
|
|
85
87
|
}
|
|
86
|
-
catch {
|
|
87
|
-
|
|
88
|
+
catch { }
|
|
89
|
+
try {
|
|
90
|
+
db.exec('ALTER TABLE memories ADD COLUMN channel TEXT');
|
|
88
91
|
}
|
|
92
|
+
catch { }
|
|
89
93
|
const store = new Store(db, path);
|
|
90
94
|
if (isFresh)
|
|
91
95
|
await store.flush();
|
|
@@ -93,8 +97,8 @@ export class Store {
|
|
|
93
97
|
}
|
|
94
98
|
async upsert(rec) {
|
|
95
99
|
this.db.run(`INSERT INTO memories
|
|
96
|
-
(id, scope, project_hash, source, content, tags, created_at, updated_at, access_count, last_accessed_at, expires_at)
|
|
97
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
100
|
+
(id, scope, project_hash, source, content, tags, created_at, updated_at, access_count, last_accessed_at, expires_at, channel)
|
|
101
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
98
102
|
ON CONFLICT(id) DO UPDATE SET
|
|
99
103
|
scope=excluded.scope,
|
|
100
104
|
project_hash=excluded.project_hash,
|
|
@@ -102,7 +106,8 @@ export class Store {
|
|
|
102
106
|
content=excluded.content,
|
|
103
107
|
tags=excluded.tags,
|
|
104
108
|
updated_at=excluded.updated_at,
|
|
105
|
-
expires_at=excluded.expires_at
|
|
109
|
+
expires_at=excluded.expires_at,
|
|
110
|
+
channel=excluded.channel`, [
|
|
106
111
|
rec.id,
|
|
107
112
|
rec.scope,
|
|
108
113
|
rec.projectHash,
|
|
@@ -114,6 +119,7 @@ export class Store {
|
|
|
114
119
|
rec.accessCount,
|
|
115
120
|
rec.lastAccessedAt,
|
|
116
121
|
rec.expiresAt,
|
|
122
|
+
rec.channel,
|
|
117
123
|
]);
|
|
118
124
|
await this.flush();
|
|
119
125
|
}
|
|
@@ -128,6 +134,7 @@ export class Store {
|
|
|
128
134
|
scope: fields.scope ?? existing.scope,
|
|
129
135
|
projectHash: fields.projectHash !== undefined ? fields.projectHash : existing.projectHash,
|
|
130
136
|
expiresAt: fields.expiresAt !== undefined ? fields.expiresAt : existing.expiresAt,
|
|
137
|
+
channel: fields.channel !== undefined ? fields.channel : existing.channel,
|
|
131
138
|
updatedAt: Date.now(),
|
|
132
139
|
};
|
|
133
140
|
await this.upsert(next);
|
|
@@ -173,6 +180,11 @@ export class Store {
|
|
|
173
180
|
where.push(`source IN (${sources.map(() => '?').join(',')})`);
|
|
174
181
|
args.push(...sources);
|
|
175
182
|
}
|
|
183
|
+
if (filter.channel) {
|
|
184
|
+
const chans = Array.isArray(filter.channel) ? filter.channel : [filter.channel];
|
|
185
|
+
where.push(`channel IN (${chans.map(() => '?').join(',')})`);
|
|
186
|
+
args.push(...chans);
|
|
187
|
+
}
|
|
176
188
|
if (!filter.includeExpired) {
|
|
177
189
|
where.push('(expires_at IS NULL OR expires_at > ?)');
|
|
178
190
|
args.push(Date.now());
|
|
@@ -193,7 +205,7 @@ export class Store {
|
|
|
193
205
|
}
|
|
194
206
|
async count() {
|
|
195
207
|
const stmt = this.db.prepare('SELECT scope, COUNT(*) as n FROM memories GROUP BY scope');
|
|
196
|
-
const byScope = { project: 0, global: 0 };
|
|
208
|
+
const byScope = { project: 0, global: 0, team: 0 };
|
|
197
209
|
let total = 0;
|
|
198
210
|
while (stmt.step()) {
|
|
199
211
|
const row = stmt.getAsObject();
|
|
@@ -207,7 +219,19 @@ export class Store {
|
|
|
207
219
|
if (expStmt.step())
|
|
208
220
|
expired = Number(expStmt.getAsObject().n);
|
|
209
221
|
expStmt.free();
|
|
210
|
-
|
|
222
|
+
const chanStmt = this.db.prepare(`SELECT channel, COUNT(*) as n FROM memories WHERE channel IS NOT NULL GROUP BY channel`);
|
|
223
|
+
const byChannel = {};
|
|
224
|
+
while (chanStmt.step()) {
|
|
225
|
+
const row = chanStmt.getAsObject();
|
|
226
|
+
byChannel[row.channel] = Number(row.n);
|
|
227
|
+
}
|
|
228
|
+
chanStmt.free();
|
|
229
|
+
const ncStmt = this.db.prepare('SELECT COUNT(*) as n FROM memories WHERE access_count = 0');
|
|
230
|
+
let neverRecalled = 0;
|
|
231
|
+
if (ncStmt.step())
|
|
232
|
+
neverRecalled = Number(ncStmt.getAsObject().n);
|
|
233
|
+
ncStmt.free();
|
|
234
|
+
return { total, byScope, byChannel, expired, neverRecalled };
|
|
211
235
|
}
|
|
212
236
|
async bumpAccess(id) {
|
|
213
237
|
const now = Date.now();
|
|
@@ -234,6 +258,7 @@ export class Store {
|
|
|
234
258
|
accessCount: Number(row.access_count),
|
|
235
259
|
lastAccessedAt: Number(row.last_accessed_at),
|
|
236
260
|
expiresAt: row.expires_at == null ? null : Number(row.expires_at),
|
|
261
|
+
channel: row.channel ?? null,
|
|
237
262
|
};
|
|
238
263
|
}
|
|
239
264
|
}
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,SAA4B,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export type MemoryScope = 'project' | 'global';
|
|
2
|
-
export type MemorySource = 'manual' | 'auto-edit' | 'auto-task' | 'imported';
|
|
1
|
+
export type MemoryScope = 'project' | 'global' | 'team';
|
|
2
|
+
export type MemorySource = 'manual' | 'auto-edit' | 'auto-task' | 'imported' | 'team-sync';
|
|
3
|
+
/** Structured category beyond freeform tags. Channels are an opinionated set. */
|
|
4
|
+
export type MemoryChannel = 'decision' | 'convention' | 'gotcha' | 'todo' | 'anti-pattern' | 'note';
|
|
5
|
+
export declare const CHANNELS: readonly MemoryChannel[];
|
|
3
6
|
export type MemoryRecord = {
|
|
4
7
|
id: string;
|
|
5
8
|
scope: MemoryScope;
|
|
@@ -13,6 +16,8 @@ export type MemoryRecord = {
|
|
|
13
16
|
lastAccessedAt: number;
|
|
14
17
|
/** Unix ms after which the memory should be considered expired and skipped from recall. null = never. */
|
|
15
18
|
expiresAt: number | null;
|
|
19
|
+
/** Optional structured channel for organizing memories beyond tags. */
|
|
20
|
+
channel: MemoryChannel | null;
|
|
16
21
|
};
|
|
17
22
|
export type CaptureInput = {
|
|
18
23
|
content: string;
|
|
@@ -20,6 +25,7 @@ export type CaptureInput = {
|
|
|
20
25
|
projectHash?: string | null;
|
|
21
26
|
source?: MemorySource;
|
|
22
27
|
tags?: string[];
|
|
28
|
+
channel?: MemoryChannel | null;
|
|
23
29
|
/** Unix ms or null. Convenience helper: pass `Date.now() + ms` for relative TTL. */
|
|
24
30
|
expiresAt?: number | null;
|
|
25
31
|
/**
|
|
@@ -28,6 +34,10 @@ export type CaptureInput = {
|
|
|
28
34
|
* Pass `0` to always insert.
|
|
29
35
|
*/
|
|
30
36
|
dedupThreshold?: number;
|
|
37
|
+
/** Override secret-guard. Default false. */
|
|
38
|
+
allowSensitive?: boolean;
|
|
39
|
+
/** Pre-supplied id (used when importing/team-sync to preserve identity). */
|
|
40
|
+
id?: string;
|
|
31
41
|
};
|
|
32
42
|
export type RecallOpts = {
|
|
33
43
|
k?: number;
|
|
@@ -38,6 +48,8 @@ export type RecallOpts = {
|
|
|
38
48
|
tags?: string[];
|
|
39
49
|
/** Filter results by source. */
|
|
40
50
|
source?: MemorySource | MemorySource[];
|
|
51
|
+
/** Filter results by channel. */
|
|
52
|
+
channel?: MemoryChannel | MemoryChannel[];
|
|
41
53
|
/** Only consider memories with `updatedAt >= since` (unix ms). */
|
|
42
54
|
since?: number;
|
|
43
55
|
/** Include expired memories in results. Default false. */
|
|
@@ -53,6 +65,7 @@ export type ListFilter = {
|
|
|
53
65
|
projectHash?: string | null;
|
|
54
66
|
tags?: string[];
|
|
55
67
|
source?: MemorySource | MemorySource[];
|
|
68
|
+
channel?: MemoryChannel | MemoryChannel[];
|
|
56
69
|
limit?: number;
|
|
57
70
|
since?: number;
|
|
58
71
|
includeExpired?: boolean;
|
|
@@ -63,6 +76,7 @@ export type UpdateInput = {
|
|
|
63
76
|
scope?: MemoryScope;
|
|
64
77
|
projectHash?: string | null;
|
|
65
78
|
expiresAt?: number | null;
|
|
79
|
+
channel?: MemoryChannel | null;
|
|
66
80
|
};
|
|
67
81
|
export type PruneOpts = {
|
|
68
82
|
/** Drop memories whose `expiresAt` is in the past. Default true. */
|
|
@@ -87,10 +101,12 @@ export type PruneResult = {
|
|
|
87
101
|
export type MnemoStats = {
|
|
88
102
|
totalMemories: number;
|
|
89
103
|
byScope: Record<MemoryScope, number>;
|
|
104
|
+
byChannel: Record<string, number>;
|
|
90
105
|
indexSize: number;
|
|
91
106
|
embeddingDimension: number;
|
|
92
107
|
storageBytes: number;
|
|
93
108
|
expired: number;
|
|
109
|
+
neverRecalled: number;
|
|
94
110
|
};
|
|
95
111
|
export type MnemoOpts = {
|
|
96
112
|
dataDir?: string;
|
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,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
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":"AAaA,MAAM,CAAC,MAAM,QAAQ,GAA6B;IAChD,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,cAAc;IACd,MAAM;CACE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-index.d.ts","sourceRoot":"","sources":["../src/vector-index.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF;;;GAGG;AACH,qBAAa,WAAW;IAMpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IANd,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAE9C,OAAO;IAKP,OAAO,CAAC,MAAM,CAAC,OAAO;WAIT,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IA6BxD,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAelE,IAAI,IAAI,MAAM;IAIR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"vector-index.d.ts","sourceRoot":"","sources":["../src/vector-index.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF;;;GAGG;AACH,qBAAa,WAAW;IAMpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IANd,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAE9C,OAAO;IAKP,OAAO,CAAC,MAAM,CAAC,OAAO;WAIT,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IA6BxD,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAelE,IAAI,IAAI,MAAM;IAIR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB5B"}
|
package/dist/vector-index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import hnswlib from 'hnswlib-node';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
const { HierarchicalNSW } = hnswlib;
|
|
4
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { mkdir, readFile, writeFile, unlink } from 'node:fs/promises';
|
|
5
5
|
import { dirname } from 'node:path';
|
|
6
6
|
/**
|
|
7
7
|
* HNSW vector index with id-based lookup. Stores a label↔id mapping
|
|
@@ -87,6 +87,21 @@ export class VectorIndex {
|
|
|
87
87
|
return this.idToLabel.size;
|
|
88
88
|
}
|
|
89
89
|
async save() {
|
|
90
|
+
// hnswlib-node has a quirk where a saved-then-reloaded empty index
|
|
91
|
+
// refuses to accept new points ("exceeds the specified limit"). Avoid
|
|
92
|
+
// it by only persisting the HNSW binary once we actually have entries.
|
|
93
|
+
if (this.idToLabel.size === 0) {
|
|
94
|
+
// Best-effort cleanup of any prior empty file.
|
|
95
|
+
try {
|
|
96
|
+
await unlink(this.opts.path);
|
|
97
|
+
}
|
|
98
|
+
catch { }
|
|
99
|
+
try {
|
|
100
|
+
await unlink(VectorIndex.mapPath(this.opts.path));
|
|
101
|
+
}
|
|
102
|
+
catch { }
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
90
105
|
this.hnsw.writeIndexSync(this.opts.path);
|
|
91
106
|
const map = {
|
|
92
107
|
entries: [...this.idToLabel.entries()],
|
package/dist/vector-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-index.js","sourceRoot":"","sources":["../src/vector-index.ts"],"names":[],"mappings":"AAAA,OAAO,OAA6C,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"vector-index.js","sourceRoot":"","sources":["../src/vector-index.ts"],"names":[],"mappings":"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"}
|