@aman_asmuei/amem 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +83 -11
  2. package/dist/cli.js +6 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/dashboard.d.ts +1 -1
  5. package/dist/dashboard.js +1 -1
  6. package/dist/dashboard.js.map +1 -1
  7. package/dist/index.js +3 -7
  8. package/dist/index.js.map +1 -1
  9. package/dist/tools/advanced.d.ts +1 -1
  10. package/dist/tools/advanced.js +167 -4
  11. package/dist/tools/advanced.js.map +1 -1
  12. package/dist/tools/graph.d.ts +1 -1
  13. package/dist/tools/graph.js +1 -2
  14. package/dist/tools/graph.js.map +1 -1
  15. package/dist/tools/index.d.ts +2 -2
  16. package/dist/tools/index.js +2 -2
  17. package/dist/tools/index.js.map +1 -1
  18. package/dist/tools/log.d.ts +1 -1
  19. package/dist/tools/log.js +1 -2
  20. package/dist/tools/log.js.map +1 -1
  21. package/dist/tools/memory.d.ts +1 -2
  22. package/dist/tools/memory.js +35 -19
  23. package/dist/tools/memory.js.map +1 -1
  24. package/dist/tools/reminders.d.ts +1 -1
  25. package/dist/tools/reminders.js +4 -5
  26. package/dist/tools/reminders.js.map +1 -1
  27. package/dist/tools/versions.d.ts +1 -1
  28. package/dist/tools/versions.js +3 -4
  29. package/dist/tools/versions.js.map +1 -1
  30. package/dist/tools.test.js +1 -2
  31. package/dist/tools.test.js.map +1 -1
  32. package/package.json +3 -9
  33. package/dist/ann.d.ts +0 -26
  34. package/dist/ann.js +0 -155
  35. package/dist/ann.js.map +0 -1
  36. package/dist/auto-relate.d.ts +0 -14
  37. package/dist/auto-relate.js +0 -47
  38. package/dist/auto-relate.js.map +0 -1
  39. package/dist/config.d.ts +0 -51
  40. package/dist/config.js +0 -130
  41. package/dist/config.js.map +0 -1
  42. package/dist/database.d.ts +0 -146
  43. package/dist/database.js +0 -746
  44. package/dist/database.js.map +0 -1
  45. package/dist/database.test.d.ts +0 -1
  46. package/dist/database.test.js +0 -275
  47. package/dist/database.test.js.map +0 -1
  48. package/dist/doctor.d.ts +0 -23
  49. package/dist/doctor.js +0 -107
  50. package/dist/doctor.js.map +0 -1
  51. package/dist/embeddings.d.ts +0 -38
  52. package/dist/embeddings.js +0 -251
  53. package/dist/embeddings.js.map +0 -1
  54. package/dist/embeddings.test.d.ts +0 -1
  55. package/dist/embeddings.test.js +0 -106
  56. package/dist/embeddings.test.js.map +0 -1
  57. package/dist/extractor.d.ts +0 -13
  58. package/dist/extractor.js +0 -89
  59. package/dist/extractor.js.map +0 -1
  60. package/dist/memory.d.ts +0 -133
  61. package/dist/memory.js +0 -432
  62. package/dist/memory.js.map +0 -1
  63. package/dist/memory.test.d.ts +0 -1
  64. package/dist/memory.test.js +0 -172
  65. package/dist/memory.test.js.map +0 -1
  66. package/dist/query-expand.d.ts +0 -9
  67. package/dist/query-expand.js +0 -71
  68. package/dist/query-expand.js.map +0 -1
  69. package/dist/repair.d.ts +0 -8
  70. package/dist/repair.js +0 -90
  71. package/dist/repair.js.map +0 -1
  72. package/dist/schemas.d.ts +0 -885
  73. package/dist/schemas.js +0 -268
  74. package/dist/schemas.js.map +0 -1
  75. package/dist/sync.d.ts +0 -85
  76. package/dist/sync.js +0 -304
  77. package/dist/sync.js.map +0 -1
  78. package/dist/tools/helpers.d.ts +0 -7
  79. package/dist/tools/helpers.js +0 -23
  80. package/dist/tools/helpers.js.map +0 -1
package/dist/ann.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ann.js","sourceRoot":"","sources":["../src/ann.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { AmemDatabase } from "./database.js";
2
- export interface AutoRelateOptions {
3
- minSimilarity?: number;
4
- maxRelations?: number;
5
- maxCandidates?: number;
6
- }
7
- export interface AutoRelateResult {
8
- created: number;
9
- relations: Array<{
10
- toId: string;
11
- similarity: number;
12
- }>;
13
- }
14
- export declare function autoRelateMemory(db: AmemDatabase, newMemoryId: string, options?: AutoRelateOptions): AutoRelateResult;
@@ -1,47 +0,0 @@
1
- import { cosineSimilarity } from "./embeddings.js";
2
- export function autoRelateMemory(db, newMemoryId, options) {
3
- const minSimilarity = options?.minSimilarity ?? 0.6;
4
- const maxRelations = options?.maxRelations ?? 3;
5
- const maxCandidates = options?.maxCandidates ?? 200;
6
- const empty = { created: 0, relations: [] };
7
- // 1. Get the new memory, return early if no embedding
8
- const newMemory = db.getById(newMemoryId);
9
- if (!newMemory?.embedding)
10
- return empty;
11
- // 2. Get recent memories with embeddings (up to maxCandidates)
12
- const candidates = db.getRecentWithEmbeddings(maxCandidates);
13
- // 3. Score each by cosine similarity, filter >= minSimilarity and < 0.95 (skip near-dupes)
14
- const scored = [];
15
- for (const mem of candidates) {
16
- if (mem.id === newMemoryId)
17
- continue;
18
- if (!mem.embedding)
19
- continue;
20
- const sim = cosineSimilarity(newMemory.embedding, mem.embedding);
21
- if (sim >= minSimilarity && sim < 0.95) {
22
- scored.push({ id: mem.id, similarity: sim });
23
- }
24
- }
25
- // 4. Sort descending, take top maxRelations
26
- scored.sort((a, b) => b.similarity - a.similarity);
27
- const top = scored.slice(0, maxRelations);
28
- // 5. Check existing relations to avoid duplicates, then create edges
29
- const existingRelations = db.getRelations(newMemoryId);
30
- const existingTargets = new Set(existingRelations.map((r) => (r.fromId === newMemoryId ? r.toId : r.fromId)));
31
- const created = [];
32
- for (const candidate of top) {
33
- if (existingTargets.has(candidate.id))
34
- continue;
35
- // 6. Create "related_to" edges with similarity as strength
36
- try {
37
- db.addRelation(newMemoryId, candidate.id, "related_to", candidate.similarity);
38
- created.push({ toId: candidate.id, similarity: candidate.similarity });
39
- }
40
- catch {
41
- // UNIQUE constraint may fire — safe to ignore
42
- }
43
- }
44
- // 7. Return count and details
45
- return { created: created.length, relations: created };
46
- }
47
- //# sourceMappingURL=auto-relate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-relate.js","sourceRoot":"","sources":["../src/auto-relate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAanD,MAAM,UAAU,gBAAgB,CAC9B,EAAgB,EAChB,WAAmB,EACnB,OAA2B;IAE3B,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,GAAG,CAAC;IACpD,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,GAAG,CAAC;IAEpD,MAAM,KAAK,GAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAE9D,sDAAsD;IACtD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,SAAS;QAAE,OAAO,KAAK,CAAC;IAExC,+DAA+D;IAC/D,MAAM,UAAU,GAAG,EAAE,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAE7D,2FAA2F;IAC3F,MAAM,MAAM,GAA8C,EAAE,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,EAAE,KAAK,WAAW;YAAE,SAAS;QACrC,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,SAAS;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE1C,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAC7E,CAAC;IAEF,MAAM,OAAO,GAAgD,EAAE,CAAC;IAChE,KAAK,MAAM,SAAS,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAAE,SAAS;QAChD,2DAA2D;QAC3D,IAAI,CAAC;YACH,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACzD,CAAC"}
package/dist/config.d.ts DELETED
@@ -1,51 +0,0 @@
1
- export interface AmemConfig {
2
- embeddingModel: string;
3
- embeddingDimensions: number;
4
- embeddingCacheSize: number;
5
- retrieval: {
6
- semanticWeight: number;
7
- ftsWeight: number;
8
- graphWeight: number;
9
- temporalWeight: number;
10
- maxCandidates: number;
11
- rerankerEnabled: boolean;
12
- rerankerTopK: number;
13
- };
14
- consolidation: {
15
- maxStaleDays: number;
16
- minConfidence: number;
17
- minAccessCount: number;
18
- enableDecay: boolean;
19
- decayFactor: number;
20
- };
21
- privacy: {
22
- enablePrivateTags: boolean;
23
- redactPatterns: string[];
24
- };
25
- hooks: {
26
- enabled: boolean;
27
- captureToolUse: boolean;
28
- captureSessionEnd: boolean;
29
- autoExtractInterval: number;
30
- };
31
- tiers: {
32
- coreMaxTokens: number;
33
- workingMaxTokens: number;
34
- };
35
- team: {
36
- enabled: boolean;
37
- syncPath: string | null;
38
- syncInterval: number;
39
- userId: string | null;
40
- };
41
- }
42
- export declare function getConfigPath(): string;
43
- export declare function loadConfig(): AmemConfig;
44
- export declare function saveConfig(config: Partial<AmemConfig>): void;
45
- export declare function getDefaultConfig(): AmemConfig;
46
- export declare function resetConfigCache(): void;
47
- /**
48
- * Strip <private>...</private> tags and redact patterns from content before storage.
49
- * Returns cleaned content, or null if the entire content is private.
50
- */
51
- export declare function sanitizeContent(content: string, config?: AmemConfig): string | null;
package/dist/config.js DELETED
@@ -1,130 +0,0 @@
1
- import path from "node:path";
2
- import os from "node:os";
3
- import fs from "node:fs";
4
- const DEFAULT_CONFIG = {
5
- embeddingModel: "Xenova/bge-small-en-v1.5",
6
- embeddingDimensions: 384,
7
- embeddingCacheSize: 128,
8
- retrieval: {
9
- semanticWeight: 0.4,
10
- ftsWeight: 0.3,
11
- graphWeight: 0.15,
12
- temporalWeight: 0.15,
13
- maxCandidates: 50000,
14
- rerankerEnabled: false,
15
- rerankerTopK: 20,
16
- },
17
- consolidation: {
18
- maxStaleDays: 60,
19
- minConfidence: 0.3,
20
- minAccessCount: 2,
21
- enableDecay: false,
22
- decayFactor: 0.95,
23
- },
24
- privacy: {
25
- enablePrivateTags: true,
26
- redactPatterns: [
27
- "(?:api[_-]?key|secret|token|password|passwd|credential)\\s*[:=]\\s*['\"]?[A-Za-z0-9_\\-\\.]{8,}",
28
- ],
29
- },
30
- hooks: {
31
- enabled: true,
32
- captureToolUse: true,
33
- captureSessionEnd: true,
34
- autoExtractInterval: 0,
35
- },
36
- tiers: {
37
- coreMaxTokens: 500,
38
- workingMaxTokens: 2000,
39
- },
40
- team: {
41
- enabled: false,
42
- syncPath: null,
43
- syncInterval: 30,
44
- userId: null,
45
- },
46
- };
47
- let loadedConfig = null;
48
- export function getConfigPath() {
49
- const amemDir = process.env.AMEM_DIR || path.join(os.homedir(), ".amem");
50
- return path.join(amemDir, "config.json");
51
- }
52
- export function loadConfig() {
53
- if (loadedConfig)
54
- return loadedConfig;
55
- const configPath = getConfigPath();
56
- try {
57
- if (fs.existsSync(configPath)) {
58
- const raw = fs.readFileSync(configPath, "utf-8").trim();
59
- if (raw) {
60
- const userConfig = JSON.parse(raw);
61
- loadedConfig = deepMerge(DEFAULT_CONFIG, userConfig);
62
- return loadedConfig;
63
- }
64
- }
65
- }
66
- catch (error) {
67
- console.error("[amem] Failed to load config, using defaults:", error instanceof Error ? error.message : String(error));
68
- }
69
- loadedConfig = { ...DEFAULT_CONFIG };
70
- return loadedConfig;
71
- }
72
- export function saveConfig(config) {
73
- const configPath = getConfigPath();
74
- const dir = path.dirname(configPath);
75
- fs.mkdirSync(dir, { recursive: true });
76
- // Merge with existing config
77
- const existing = loadConfig();
78
- const merged = deepMerge(existing, config);
79
- fs.writeFileSync(configPath, JSON.stringify(merged, null, 2) + "\n");
80
- loadedConfig = merged;
81
- }
82
- export function getDefaultConfig() {
83
- return { ...DEFAULT_CONFIG };
84
- }
85
- export function resetConfigCache() {
86
- loadedConfig = null;
87
- }
88
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
- function deepMerge(base, override) {
90
- const result = { ...base };
91
- for (const key of Object.keys(override)) {
92
- const val = override[key];
93
- if (val !== undefined && val !== null) {
94
- if (typeof val === "object" && !Array.isArray(val) && typeof result[key] === "object" && !Array.isArray(result[key])) {
95
- result[key] = deepMerge(result[key], val);
96
- }
97
- else {
98
- result[key] = val;
99
- }
100
- }
101
- }
102
- return result;
103
- }
104
- // ── Privacy helpers ─────────────────────────────────────
105
- /**
106
- * Strip <private>...</private> tags and redact patterns from content before storage.
107
- * Returns cleaned content, or null if the entire content is private.
108
- */
109
- export function sanitizeContent(content, config) {
110
- const cfg = config ?? loadConfig();
111
- if (!cfg.privacy.enablePrivateTags)
112
- return content;
113
- // Strip <private>...</private> blocks
114
- let cleaned = content.replace(/<private>[\s\S]*?<\/private>/gi, "[REDACTED]");
115
- // If entire content was private, return null (don't store)
116
- if (cleaned.trim() === "[REDACTED]" || cleaned.trim() === "")
117
- return null;
118
- // Apply regex redaction patterns
119
- for (const pattern of cfg.privacy.redactPatterns) {
120
- try {
121
- const regex = new RegExp(pattern, "g");
122
- cleaned = cleaned.replace(regex, "[REDACTED]");
123
- }
124
- catch {
125
- // Invalid regex pattern — skip
126
- }
127
- }
128
- return cleaned;
129
- }
130
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,146 +0,0 @@
1
- import type { Memory, MemoryTypeValue } from "./memory.js";
2
- export interface MemoryInput {
3
- content: string;
4
- type: MemoryTypeValue;
5
- tags: string[];
6
- confidence: number;
7
- source: string;
8
- embedding: Float32Array | null;
9
- scope: string;
10
- validFrom?: number;
11
- validUntil?: number;
12
- tier?: string;
13
- }
14
- export interface SessionSummary {
15
- id: string;
16
- sessionId: string;
17
- summary: string;
18
- keyDecisions: string[];
19
- keyCorrections: string[];
20
- memoriesExtracted: number;
21
- project: string;
22
- createdAt: number;
23
- }
24
- export interface MemoryStats {
25
- total: number;
26
- byType: Record<string, number>;
27
- }
28
- export interface LogEntry {
29
- id: string;
30
- sessionId: string;
31
- role: "user" | "assistant" | "system";
32
- content: string;
33
- timestamp: number;
34
- project: string;
35
- metadata: Record<string, unknown>;
36
- }
37
- export interface LogEntryInput {
38
- sessionId: string;
39
- role: "user" | "assistant" | "system";
40
- content: string;
41
- project: string;
42
- metadata?: Record<string, unknown>;
43
- }
44
- export interface MemoryVersion {
45
- versionId: string;
46
- memoryId: string;
47
- content: string;
48
- confidence: number;
49
- editedAt: number;
50
- reason: string;
51
- }
52
- export interface MemoryRelation {
53
- id: string;
54
- fromId: string;
55
- toId: string;
56
- relationshipType: string;
57
- strength: number;
58
- createdAt: number;
59
- validFrom?: number | null;
60
- validUntil?: number | null;
61
- }
62
- export interface PatchInput {
63
- field: "content" | "confidence" | "tags" | "type";
64
- value: string | number | string[];
65
- reason: string;
66
- skipSnapshot?: boolean;
67
- }
68
- export interface AmemDatabase {
69
- insertMemory(input: MemoryInput): string;
70
- findByContentHash(content: string): Memory | null;
71
- getById(id: string): Memory | null;
72
- searchByType(type: MemoryTypeValue): Memory[];
73
- searchByTag(tag: string): Memory[];
74
- getAllWithEmbeddings(): Memory[];
75
- getRecentWithEmbeddings(limit: number): Memory[];
76
- getAll(): Memory[];
77
- updateConfidence(id: string, confidence: number): void;
78
- updateEmbedding(id: string, embedding: Float32Array): void;
79
- touchAccess(id: string): void;
80
- deleteMemory(id: string): void;
81
- getStats(): MemoryStats;
82
- searchByScope(scope: string): Memory[];
83
- getAllForProject(project: string): Memory[];
84
- listTables(): string[];
85
- close(): void;
86
- appendLog(entry: LogEntryInput): string;
87
- getLogBySession(sessionId: string): LogEntry[];
88
- searchLog(query: string, limit?: number): LogEntry[];
89
- getRecentLog(limit: number, project?: string): LogEntry[];
90
- deleteLogBefore(timestamp: number): number;
91
- getLogCount(): number;
92
- snapshotVersion(memoryId: string, reason: string): void;
93
- getVersionHistory(memoryId: string): MemoryVersion[];
94
- patchMemory(id: string, patch: PatchInput): boolean;
95
- addRelation(fromId: string, toId: string, type: string, strength?: number): string;
96
- getRelations(memoryId: string): MemoryRelation[];
97
- removeRelation(relationId: string): void;
98
- getRelatedMemories(memoryId: string): Memory[];
99
- getMemoriesByDateRange(from: number, to: number): Memory[];
100
- getMemoriesSince(timestamp: number): Memory[];
101
- fullTextSearch(query: string, limit?: number, scopeProject?: string): Memory[];
102
- insertReminder(content: string, dueAt: number | null, scope: string): string;
103
- listReminders(includeCompleted?: boolean, scope?: string): Array<{
104
- id: string;
105
- content: string;
106
- dueAt: number | null;
107
- completed: boolean;
108
- createdAt: number;
109
- scope: string;
110
- }>;
111
- checkReminders(): Array<{
112
- id: string;
113
- content: string;
114
- dueAt: number | null;
115
- status: "overdue" | "today" | "upcoming";
116
- scope: string;
117
- }>;
118
- completeReminder(id: string): boolean;
119
- getConfidenceStats(): {
120
- high: number;
121
- medium: number;
122
- low: number;
123
- };
124
- getEmbeddingCount(): number;
125
- transaction(fn: () => void): void;
126
- resolveId(partialId: string): string | null;
127
- resolveReminderId(partialId: string): string | null;
128
- getAllRelations(): MemoryRelation[];
129
- expireMemory(id: string, timestamp?: number): void;
130
- getValidMemories(asOf?: number): Memory[];
131
- updateTier(id: string, tier: string): void;
132
- getByTier(tier: string, scope?: string): Memory[];
133
- insertSummary(input: {
134
- sessionId: string;
135
- summary: string;
136
- keyDecisions: string[];
137
- keyCorrections: string[];
138
- memoriesExtracted: number;
139
- project: string;
140
- }): string;
141
- getSummaryBySession(sessionId: string): SessionSummary | null;
142
- getRecentSummaries(project: string, limit?: number): SessionSummary[];
143
- expireRelation(relationId: string, timestamp?: number): void;
144
- getValidRelations(asOf?: number): MemoryRelation[];
145
- }
146
- export declare function createDatabase(dbPath: string): AmemDatabase;