@aman_asmuei/amem 0.5.0 → 0.7.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 (53) hide show
  1. package/README.md +49 -7
  2. package/dist/cli.js +7 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/database.d.ts +15 -0
  5. package/dist/database.js +129 -19
  6. package/dist/database.js.map +1 -1
  7. package/dist/database.test.d.ts +1 -0
  8. package/dist/database.test.js +275 -0
  9. package/dist/database.test.js.map +1 -0
  10. package/dist/embeddings.js +30 -2
  11. package/dist/embeddings.js.map +1 -1
  12. package/dist/embeddings.test.d.ts +1 -0
  13. package/dist/embeddings.test.js +106 -0
  14. package/dist/embeddings.test.js.map +1 -0
  15. package/dist/index.js +158 -80
  16. package/dist/index.js.map +1 -1
  17. package/dist/memory.d.ts +19 -2
  18. package/dist/memory.js +108 -35
  19. package/dist/memory.js.map +1 -1
  20. package/dist/memory.test.d.ts +1 -0
  21. package/dist/memory.test.js +171 -0
  22. package/dist/memory.test.js.map +1 -0
  23. package/dist/schemas.d.ts +209 -31
  24. package/dist/schemas.js +54 -1
  25. package/dist/schemas.js.map +1 -1
  26. package/dist/tools/graph.d.ts +3 -0
  27. package/dist/tools/graph.js +344 -0
  28. package/dist/tools/graph.js.map +1 -0
  29. package/dist/tools/helpers.d.ts +7 -0
  30. package/dist/tools/helpers.js +23 -0
  31. package/dist/tools/helpers.js.map +1 -0
  32. package/dist/tools/index.d.ts +4 -0
  33. package/dist/tools/index.js +19 -0
  34. package/dist/tools/index.js.map +1 -0
  35. package/dist/tools/log.d.ts +3 -0
  36. package/dist/tools/log.js +244 -0
  37. package/dist/tools/log.js.map +1 -0
  38. package/dist/tools/memory.d.ts +4 -0
  39. package/dist/tools/memory.js +1245 -0
  40. package/dist/tools/memory.js.map +1 -0
  41. package/dist/tools/reminders.d.ts +3 -0
  42. package/dist/tools/reminders.js +228 -0
  43. package/dist/tools/reminders.js.map +1 -0
  44. package/dist/tools/versions.d.ts +3 -0
  45. package/dist/tools/versions.js +118 -0
  46. package/dist/tools/versions.js.map +1 -0
  47. package/dist/tools.test.d.ts +1 -0
  48. package/dist/tools.test.js +217 -0
  49. package/dist/tools.test.js.map +1 -0
  50. package/package.json +1 -2
  51. package/dist/tools.d.ts +0 -6
  52. package/dist/tools.js +0 -1812
  53. package/dist/tools.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import { createDatabase } from "./database.js";
3
+ import { recallMemories, detectConflict } from "./memory.js";
4
+ import { formatAge, TYPE_ORDER } from "./tools/index.js";
5
+ /**
6
+ * Since registerTools requires an McpServer instance (complex to mock),
7
+ * we test the underlying logic that tools invoke: database operations,
8
+ * recallMemories, detectConflict, formatAge, and TYPE_ORDER.
9
+ * This exercises the same critical paths the tool handlers do.
10
+ */
11
+ let db;
12
+ beforeEach(() => {
13
+ db = createDatabase(":memory:");
14
+ });
15
+ afterEach(() => {
16
+ db.close();
17
+ });
18
+ describe("TYPE_ORDER", () => {
19
+ it("puts corrections first, then decisions", () => {
20
+ expect(TYPE_ORDER[0]).toBe("correction");
21
+ expect(TYPE_ORDER[1]).toBe("decision");
22
+ });
23
+ it("contains all 6 types", () => {
24
+ expect(TYPE_ORDER).toHaveLength(6);
25
+ expect(TYPE_ORDER).toContain("correction");
26
+ expect(TYPE_ORDER).toContain("decision");
27
+ expect(TYPE_ORDER).toContain("pattern");
28
+ expect(TYPE_ORDER).toContain("preference");
29
+ expect(TYPE_ORDER).toContain("topology");
30
+ expect(TYPE_ORDER).toContain("fact");
31
+ });
32
+ });
33
+ describe("formatAge", () => {
34
+ it("formats minutes ago", () => {
35
+ const tenMinAgo = Date.now() - 10 * 60 * 1000;
36
+ expect(formatAge(tenMinAgo)).toBe("10m ago");
37
+ });
38
+ it("formats hours ago", () => {
39
+ const threeHoursAgo = Date.now() - 3 * 60 * 60 * 1000;
40
+ expect(formatAge(threeHoursAgo)).toBe("3h ago");
41
+ });
42
+ it("formats days ago", () => {
43
+ const fiveDaysAgo = Date.now() - 5 * 24 * 60 * 60 * 1000;
44
+ expect(formatAge(fiveDaysAgo)).toBe("5d ago");
45
+ });
46
+ it("formats months ago", () => {
47
+ const sixtyDaysAgo = Date.now() - 60 * 24 * 60 * 60 * 1000;
48
+ expect(formatAge(sixtyDaysAgo)).toBe("2mo ago");
49
+ });
50
+ it("formats 0 minutes for just-now timestamp", () => {
51
+ expect(formatAge(Date.now())).toBe("0m ago");
52
+ });
53
+ });
54
+ describe("memory_store critical path (via db + recall)", () => {
55
+ it("stores a memory and it becomes retrievable via recall", () => {
56
+ const id = db.insertMemory({
57
+ content: "Never mock the database in integration tests",
58
+ type: "correction",
59
+ tags: ["testing"],
60
+ confidence: 1.0,
61
+ source: "conversation",
62
+ embedding: null,
63
+ scope: "global",
64
+ });
65
+ const results = recallMemories(db, { query: "database testing", limit: 10 });
66
+ expect(results.length).toBeGreaterThanOrEqual(1);
67
+ expect(results.some(r => r.id === id)).toBe(true);
68
+ });
69
+ it("conflict detection: identical content not flagged", () => {
70
+ const result = detectConflict("same content", "same content", 1.0);
71
+ expect(result.isConflict).toBe(false);
72
+ });
73
+ it("conflict detection: similar but different content IS flagged", () => {
74
+ const result = detectConflict("Use pnpm for packages", "Use npm for packages", 0.9);
75
+ expect(result.isConflict).toBe(true);
76
+ });
77
+ });
78
+ describe("memory_recall critical path", () => {
79
+ it("returns ranked results with scores", () => {
80
+ db.insertMemory({ content: "TypeScript strict mode is required", type: "correction", tags: ["typescript"], confidence: 1.0, source: "t", embedding: null, scope: "global" });
81
+ db.insertMemory({ content: "Auth module is in src/auth", type: "topology", tags: ["auth"], confidence: 0.7, source: "t", embedding: null, scope: "global" });
82
+ db.insertMemory({ content: "Prefers TypeScript over JavaScript", type: "preference", tags: ["typescript"], confidence: 0.8, source: "t", embedding: null, scope: "global" });
83
+ const results = recallMemories(db, { query: "TypeScript", limit: 10 });
84
+ // TypeScript memories should be ranked higher due to keyword matching
85
+ expect(results.length).toBeGreaterThanOrEqual(2);
86
+ // All results have a score property
87
+ for (const r of results) {
88
+ expect(r.score).toBeGreaterThanOrEqual(0);
89
+ expect(typeof r.score).toBe("number");
90
+ }
91
+ // Verify sorted by score descending
92
+ for (let i = 0; i < results.length - 1; i++) {
93
+ expect(results[i].score).toBeGreaterThanOrEqual(results[i + 1].score);
94
+ }
95
+ });
96
+ it("returns empty array for no matches", () => {
97
+ const results = recallMemories(db, { query: "nonexistent topic xyz", limit: 10 });
98
+ expect(results).toHaveLength(0);
99
+ });
100
+ });
101
+ describe("memory_inject critical path", () => {
102
+ it("corrections and decisions are retrievable and properly ordered", () => {
103
+ db.insertMemory({ content: "Never use unsafe dynamic code execution", type: "correction", tags: ["security"], confidence: 1.0, source: "t", embedding: null, scope: "global" });
104
+ db.insertMemory({ content: "Use REST not GraphQL", type: "decision", tags: ["api"], confidence: 0.9, source: "t", embedding: null, scope: "global" });
105
+ db.insertMemory({ content: "Prefer early returns", type: "pattern", tags: ["style"], confidence: 0.7, source: "t", embedding: null, scope: "global" });
106
+ // memory_inject calls recallMemories then filters by type
107
+ const results = recallMemories(db, { query: null, limit: 30 });
108
+ const corrections = results.filter(r => r.type === "correction");
109
+ const decisions = results.filter(r => r.type === "decision");
110
+ const patterns = results.filter(r => r.type === "pattern");
111
+ expect(corrections).toHaveLength(1);
112
+ expect(corrections[0].content).toBe("Never use unsafe dynamic code execution");
113
+ expect(decisions).toHaveLength(1);
114
+ expect(decisions[0].content).toBe("Use REST not GraphQL");
115
+ // Corrections have higher importance weight, so should score higher
116
+ expect(corrections[0].score).toBeGreaterThan(decisions[0].score);
117
+ expect(decisions[0].score).toBeGreaterThan(patterns[0].score);
118
+ });
119
+ });
120
+ describe("memory_forget critical path", () => {
121
+ it("deleting by ID removes the memory", () => {
122
+ const id = db.insertMemory({ content: "to forget", type: "fact", tags: [], confidence: 0.5, source: "t", embedding: null, scope: "global" });
123
+ // Verify it exists
124
+ expect(db.getById(id)).not.toBeNull();
125
+ // Delete it (what memory_forget does)
126
+ db.deleteMemory(id);
127
+ // Gone
128
+ expect(db.getById(id)).toBeNull();
129
+ });
130
+ it("deleting a nonexistent ID is a no-op", () => {
131
+ // Should not throw
132
+ db.deleteMemory("nonexistent-id");
133
+ });
134
+ });
135
+ describe("memory_patch critical path", () => {
136
+ it("patching content updates the memory and creates a version", () => {
137
+ const id = db.insertMemory({ content: "original", type: "fact", tags: ["a"], confidence: 0.8, source: "t", embedding: null, scope: "global" });
138
+ const success = db.patchMemory(id, {
139
+ field: "content",
140
+ value: "updated content",
141
+ reason: "corrected info",
142
+ });
143
+ expect(success).toBe(true);
144
+ const mem = db.getById(id);
145
+ expect(mem.content).toBe("updated content");
146
+ const versions = db.getVersionHistory(id);
147
+ expect(versions).toHaveLength(1);
148
+ expect(versions[0].content).toBe("original");
149
+ });
150
+ it("patching confidence updates the value", () => {
151
+ const id = db.insertMemory({ content: "x", type: "fact", tags: [], confidence: 0.5, source: "t", embedding: null, scope: "global" });
152
+ db.patchMemory(id, { field: "confidence", value: 0.95, reason: "validated by user" });
153
+ expect(db.getById(id).confidence).toBe(0.95);
154
+ });
155
+ it("patching tags updates the array", () => {
156
+ const id = db.insertMemory({ content: "x", type: "fact", tags: ["old"], confidence: 0.5, source: "t", embedding: null, scope: "global" });
157
+ db.patchMemory(id, { field: "tags", value: ["new", "tags"], reason: "retagged" });
158
+ expect(db.getById(id).tags).toEqual(["new", "tags"]);
159
+ });
160
+ it("patching a nonexistent memory returns false", () => {
161
+ const success = db.patchMemory("bad-id", { field: "content", value: "x", reason: "test" });
162
+ expect(success).toBe(false);
163
+ });
164
+ it("multiple patches create multiple version snapshots", () => {
165
+ const id = db.insertMemory({ content: "v1", type: "fact", tags: [], confidence: 0.5, source: "t", embedding: null, scope: "global" });
166
+ db.patchMemory(id, { field: "content", value: "v2", reason: "first edit" });
167
+ db.patchMemory(id, { field: "content", value: "v3", reason: "second edit" });
168
+ const versions = db.getVersionHistory(id);
169
+ expect(versions).toHaveLength(2);
170
+ // Both previous contents should be captured (order depends on timestamp resolution)
171
+ const versionContents = versions.map(v => v.content).sort();
172
+ expect(versionContents).toEqual(["v1", "v2"]);
173
+ const mem = db.getById(id);
174
+ expect(mem.content).toBe("v3");
175
+ });
176
+ });
177
+ describe("end-to-end: store, recall, inject, patch, forget", () => {
178
+ it("full lifecycle", () => {
179
+ // Store
180
+ const id1 = db.insertMemory({
181
+ content: "Always use strict TypeScript config",
182
+ type: "correction",
183
+ tags: ["typescript", "config"],
184
+ confidence: 1.0,
185
+ source: "conversation",
186
+ embedding: null,
187
+ scope: "global",
188
+ });
189
+ const id2 = db.insertMemory({
190
+ content: "Chose Tailwind for styling",
191
+ type: "decision",
192
+ tags: ["css", "tailwind"],
193
+ confidence: 0.9,
194
+ source: "conversation",
195
+ embedding: null,
196
+ scope: "project:myapp",
197
+ });
198
+ // Recall
199
+ const allResults = recallMemories(db, { query: null, limit: 10 });
200
+ expect(allResults).toHaveLength(2);
201
+ // Inject-style: filter to corrections and decisions
202
+ const corrections = allResults.filter(r => r.type === "correction");
203
+ const decisions = allResults.filter(r => r.type === "decision");
204
+ expect(corrections).toHaveLength(1);
205
+ expect(decisions).toHaveLength(1);
206
+ // Patch
207
+ db.patchMemory(id2, { field: "confidence", value: 0.95, reason: "team approved" });
208
+ expect(db.getById(id2).confidence).toBe(0.95);
209
+ // Forget
210
+ db.deleteMemory(id1);
211
+ expect(db.getById(id1)).toBeNull();
212
+ const remaining = recallMemories(db, { query: null, limit: 10 });
213
+ expect(remaining).toHaveLength(1);
214
+ expect(remaining[0].id).toBe(id2);
215
+ });
216
+ });
217
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../src/tools.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aman_asmuei/amem",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "The memory layer for AI coding tools. Local-first, developer-specific, works everywhere.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,7 +8,6 @@
8
8
  ".": "./dist/index.js"
9
9
  },
10
10
  "bin": {
11
- "@aman_asmuei/amem": "dist/index.js",
12
11
  "amem": "dist/index.js",
13
12
  "amem-cli": "dist/cli.js"
14
13
  },
package/dist/tools.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { AmemDatabase } from "./database.js";
3
- import { type MemoryTypeValue } from "./memory.js";
4
- export declare const TYPE_ORDER: MemoryTypeValue[];
5
- export declare function formatAge(timestamp: number): string;
6
- export declare function registerTools(server: McpServer, db: AmemDatabase, project: string): void;