@aeriondyseti/vector-memory-mcp 0.9.0-dev.2 → 0.9.0-dev.4

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 (79) hide show
  1. package/README.md +21 -1
  2. package/dist/scripts/publish.d.ts +13 -0
  3. package/dist/scripts/publish.d.ts.map +1 -0
  4. package/dist/scripts/publish.js +56 -0
  5. package/dist/scripts/publish.js.map +1 -0
  6. package/dist/scripts/test-runner.d.ts +9 -0
  7. package/dist/scripts/test-runner.d.ts.map +1 -0
  8. package/dist/scripts/test-runner.js +61 -0
  9. package/dist/scripts/test-runner.js.map +1 -0
  10. package/dist/scripts/warmup.d.ts +8 -0
  11. package/dist/scripts/warmup.d.ts.map +1 -0
  12. package/dist/scripts/warmup.js +61 -0
  13. package/dist/scripts/warmup.js.map +1 -0
  14. package/dist/src/config/index.d.ts +23 -0
  15. package/dist/src/config/index.d.ts.map +1 -0
  16. package/dist/src/config/index.js +46 -0
  17. package/dist/src/config/index.js.map +1 -0
  18. package/dist/src/db/connection.d.ts +3 -0
  19. package/dist/src/db/connection.d.ts.map +1 -0
  20. package/dist/src/db/connection.js +10 -0
  21. package/dist/src/db/connection.js.map +1 -0
  22. package/dist/src/db/memory.repository.d.ts +13 -0
  23. package/dist/src/db/memory.repository.d.ts.map +1 -0
  24. package/dist/src/db/memory.repository.js +97 -0
  25. package/dist/src/db/memory.repository.js.map +1 -0
  26. package/dist/src/db/schema.d.ts +4 -0
  27. package/dist/src/db/schema.d.ts.map +1 -0
  28. package/dist/src/db/schema.js +12 -0
  29. package/dist/src/db/schema.js.map +1 -0
  30. package/dist/src/http/mcp-transport.d.ts +19 -0
  31. package/dist/src/http/mcp-transport.d.ts.map +1 -0
  32. package/dist/src/http/mcp-transport.js +191 -0
  33. package/dist/src/http/mcp-transport.js.map +1 -0
  34. package/dist/src/http/server.d.ts +12 -0
  35. package/dist/src/http/server.d.ts.map +1 -0
  36. package/dist/src/http/server.js +168 -0
  37. package/dist/src/http/server.js.map +1 -0
  38. package/dist/src/index.d.ts +3 -0
  39. package/dist/src/index.d.ts.map +1 -0
  40. package/dist/src/index.js +59 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/src/mcp/handlers.d.ts +11 -0
  43. package/dist/src/mcp/handlers.d.ts.map +1 -0
  44. package/dist/src/mcp/handlers.js +175 -0
  45. package/dist/src/mcp/handlers.js.map +1 -0
  46. package/dist/src/mcp/server.d.ts +5 -0
  47. package/dist/src/mcp/server.d.ts.map +1 -0
  48. package/dist/src/mcp/server.js +22 -0
  49. package/dist/src/mcp/server.js.map +1 -0
  50. package/dist/src/mcp/tools.d.ts +9 -0
  51. package/dist/src/mcp/tools.d.ts.map +1 -0
  52. package/dist/src/mcp/tools.js +243 -0
  53. package/dist/src/mcp/tools.js.map +1 -0
  54. package/dist/src/services/embeddings.service.d.ts +12 -0
  55. package/dist/src/services/embeddings.service.d.ts.map +1 -0
  56. package/dist/src/services/embeddings.service.js +37 -0
  57. package/dist/src/services/embeddings.service.js.map +1 -0
  58. package/dist/src/services/memory.service.d.ts +31 -0
  59. package/dist/src/services/memory.service.d.ts.map +1 -0
  60. package/dist/src/services/memory.service.js +131 -0
  61. package/dist/src/services/memory.service.js.map +1 -0
  62. package/dist/src/types/memory.d.ts +17 -0
  63. package/dist/src/types/memory.d.ts.map +1 -0
  64. package/dist/src/types/memory.js +15 -0
  65. package/dist/src/types/memory.js.map +1 -0
  66. package/package.json +14 -10
  67. package/src/config/index.ts +0 -75
  68. package/src/db/connection.ts +0 -11
  69. package/src/db/memory.repository.ts +0 -115
  70. package/src/db/schema.ts +0 -34
  71. package/src/http/mcp-transport.ts +0 -255
  72. package/src/http/server.ts +0 -190
  73. package/src/index.ts +0 -70
  74. package/src/mcp/handlers.ts +0 -248
  75. package/src/mcp/server.ts +0 -34
  76. package/src/mcp/tools.ts +0 -254
  77. package/src/services/embeddings.service.ts +0 -48
  78. package/src/services/memory.service.ts +0 -185
  79. package/src/types/memory.ts +0 -31
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import type { MemoryService } from "../services/memory.service.js";
3
+ export declare function createServer(memoryService: MemoryService): Server;
4
+ export declare function startServer(memoryService: MemoryService): Promise<void>;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AASnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wBAAgB,YAAY,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAgBjE;AAED,wBAAsB,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7E"}
@@ -0,0 +1,22 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
4
+ import { tools } from "./tools.js";
5
+ import { handleToolCall } from "./handlers.js";
6
+ export function createServer(memoryService) {
7
+ const server = new Server({ name: "vector-memory-mcp", version: "0.6.0" }, { capabilities: { tools: {} } });
8
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
9
+ return { tools };
10
+ });
11
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
12
+ const { name, arguments: args } = request.params;
13
+ return handleToolCall(name, args, memoryService);
14
+ });
15
+ return server;
16
+ }
17
+ export async function startServer(memoryService) {
18
+ const server = createServer(memoryService);
19
+ const transport = new StdioServerTransport();
20
+ await server.connect(transport);
21
+ }
22
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,YAAY,CAAC,aAA4B;IACvD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC/C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAA4B;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare const storeMemoriesTool: Tool;
3
+ export declare const deleteMemoriesTool: Tool;
4
+ export declare const searchMemoriesTool: Tool;
5
+ export declare const getMemoriesTool: Tool;
6
+ export declare const storeHandoffTool: Tool;
7
+ export declare const getHandoffTool: Tool;
8
+ export declare const tools: Tool[];
9
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,eAAO,MAAM,iBAAiB,EAAE,IAsD/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IAkBhC,CAAC;AA+CF,eAAO,MAAM,kBAAkB,EAAE,IAuChC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IAe7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAoD9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IAQ5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,IAAI,EAQvB,CAAC"}
@@ -0,0 +1,243 @@
1
+ export const storeMemoriesTool = {
2
+ name: "store_memories",
3
+ description: `Store memories that persist across conversations. Use after making decisions or learning something worth remembering.
4
+
5
+ RULES:
6
+ - 1 concept per memory, 1-3 sentences (20-75 words)
7
+ - Self-contained with explicit subjects (no "it", "this", "the project")
8
+ - Include dates/versions when relevant
9
+ - Be concrete, not vague
10
+
11
+ MEMORY TYPES (use as metadata.type):
12
+ - decision: what was chosen + why ("Chose libSQL over PostgreSQL for vector support and simpler deployment")
13
+ - implementation: what was built + where + patterns used
14
+ - insight: learning + why it matters
15
+ - blocker: problem encountered + resolution
16
+ - next-step: TODO item + suggested approach
17
+ - context: background info + constraints
18
+
19
+ DON'T STORE: machine-specific paths, local env details, ephemeral states, pleasantries
20
+
21
+ GOOD: "Aerion chose libSQL over PostgreSQL for Resonance (Dec 2024) because of native vector support and simpler deployment."
22
+ BAD: "Uses SQLite" (no context, no subject, no reasoning)
23
+
24
+ For long content (>1000 chars), provide embedding_text with a searchable summary.`,
25
+ inputSchema: {
26
+ type: "object",
27
+ properties: {
28
+ memories: {
29
+ type: "array",
30
+ description: "Memories to store.",
31
+ items: {
32
+ type: "object",
33
+ properties: {
34
+ content: {
35
+ type: "string",
36
+ description: "The content to store.",
37
+ },
38
+ embedding_text: {
39
+ type: "string",
40
+ description: "Summary for search embedding (required if content >1000 chars).",
41
+ },
42
+ metadata: {
43
+ type: "object",
44
+ description: "Optional key-value metadata.",
45
+ additionalProperties: true,
46
+ },
47
+ },
48
+ required: ["content"],
49
+ },
50
+ },
51
+ },
52
+ required: ["memories"],
53
+ },
54
+ };
55
+ ;
56
+ export const deleteMemoriesTool = {
57
+ name: "delete_memories",
58
+ description: "Remove memories that are no longer needed—outdated info, superseded decisions, or incorrect content. " +
59
+ "Deleted memories can be recovered via search_memories with include_deleted: true.",
60
+ inputSchema: {
61
+ type: "object",
62
+ properties: {
63
+ ids: {
64
+ type: "array",
65
+ description: "IDs of memories to delete.",
66
+ items: {
67
+ type: "string",
68
+ },
69
+ },
70
+ },
71
+ required: ["ids"],
72
+ },
73
+ };
74
+ ;
75
+ const updateMemoriesTool = {
76
+ name: "update_memories",
77
+ description: `Update existing memories in place. Prefer over delete+create when updating the same conceptual item.
78
+
79
+ BEHAVIOR:
80
+ - Fields omitted/null: left untouched
81
+ - Fields provided: completely overwrite existing value (no merge)
82
+
83
+ Use to correct content, refine embedding text, or replace metadata without changing the memory ID.`,
84
+ inputSchema: {
85
+ type: "object",
86
+ properties: {
87
+ updates: {
88
+ type: "array",
89
+ description: "Updates to apply. Each must include id and at least one field to change.",
90
+ items: {
91
+ type: "object",
92
+ properties: {
93
+ id: {
94
+ type: "string",
95
+ description: "ID of memory to update.",
96
+ },
97
+ content: {
98
+ type: "string",
99
+ description: "New content (triggers embedding regeneration).",
100
+ },
101
+ embedding_text: {
102
+ type: "string",
103
+ description: "New embedding summary (triggers embedding regeneration).",
104
+ },
105
+ metadata: {
106
+ type: "object",
107
+ description: "New metadata (replaces existing entirely).",
108
+ additionalProperties: true,
109
+ },
110
+ },
111
+ required: ["id"],
112
+ },
113
+ },
114
+ },
115
+ required: ["updates"],
116
+ },
117
+ };
118
+ export const searchMemoriesTool = {
119
+ name: "search_memories",
120
+ description: `Search stored memories semantically. Use PROACTIVELY—don't wait to be asked.
121
+
122
+ WHEN TO SEARCH:
123
+ - At conversation start / returning to a project
124
+ - Before making decisions (check for prior decisions on same topic)
125
+ - When user references past work ("what did we decide", "as discussed", "remember when")
126
+ - Before suggesting solutions (check if problem was solved before)
127
+ - When debugging (check for prior blockers/resolutions)
128
+ - When uncertain about patterns or preferences
129
+
130
+ When in doubt, search. Missing relevant context is costlier than an extra query.
131
+
132
+ QUERY TIPS:
133
+ - Include project name, technical terms, or domain keywords
134
+ - Search for concepts, not exact phrases
135
+ - Try multiple queries if first doesn't return useful results`,
136
+ inputSchema: {
137
+ type: "object",
138
+ properties: {
139
+ query: {
140
+ type: "string",
141
+ description: "Natural language search query. Include relevant keywords, project names, or technical terms.",
142
+ },
143
+ limit: {
144
+ type: "integer",
145
+ description: "Maximum results to return (default: 10).",
146
+ default: 10,
147
+ },
148
+ include_deleted: {
149
+ type: "boolean",
150
+ description: "Include soft-deleted memories in results (default: false). Useful for recovering prior information.",
151
+ default: false,
152
+ },
153
+ },
154
+ required: ["query"],
155
+ },
156
+ };
157
+ export const getMemoriesTool = {
158
+ name: "get_memories",
159
+ description: "Retrieve full memory details by ID. Use when you have specific IDs from search results or prior references—otherwise use search_memories.",
160
+ inputSchema: {
161
+ type: "object",
162
+ properties: {
163
+ ids: {
164
+ type: "array",
165
+ description: "Memory IDs to retrieve.",
166
+ items: { type: "string" },
167
+ },
168
+ },
169
+ required: ["ids"],
170
+ },
171
+ };
172
+ ;
173
+ export const storeHandoffTool = {
174
+ name: "store_handoff",
175
+ description: `Save session state for seamless resumption later. Use at end of work sessions or before context switches.
176
+
177
+ Creates a structured snapshot with:
178
+ - summary: 2-3 sentences on goal and current status
179
+ - completed: what got done (include file paths)
180
+ - in_progress_blocked: work in flight or stuck
181
+ - key_decisions: choices made and WHY (crucial for future context)
182
+ - next_steps: concrete, actionable items
183
+ - memory_ids: link to related memories stored this session
184
+
185
+ Retrievable via get_handoff. Only one handoff per project—new handoffs overwrite previous.`,
186
+ inputSchema: {
187
+ type: "object",
188
+ properties: {
189
+ project: { type: "string", description: "Project name." },
190
+ branch: { type: "string", description: "Branch name (optional)." },
191
+ summary: { type: "string", description: "2-3 sentences: primary goal, current status." },
192
+ completed: {
193
+ type: "array",
194
+ items: { type: "string" },
195
+ description: "Completed items (include file paths where relevant).",
196
+ },
197
+ in_progress_blocked: {
198
+ type: "array",
199
+ items: { type: "string" },
200
+ description: "In progress or blocked items.",
201
+ },
202
+ key_decisions: {
203
+ type: "array",
204
+ items: { type: "string" },
205
+ description: "Decisions made and why.",
206
+ },
207
+ next_steps: {
208
+ type: "array",
209
+ items: { type: "string" },
210
+ description: "Concrete next steps.",
211
+ },
212
+ memory_ids: {
213
+ type: "array",
214
+ items: { type: "string" },
215
+ description: "Memory IDs referenced by this handoff.",
216
+ },
217
+ metadata: {
218
+ type: "object",
219
+ description: "Additional metadata.",
220
+ additionalProperties: true,
221
+ },
222
+ },
223
+ required: ["project", "summary"],
224
+ },
225
+ };
226
+ export const getHandoffTool = {
227
+ name: "get_handoff",
228
+ description: "Load the current project handoff snapshot. Call at conversation start or when resuming a project.",
229
+ inputSchema: {
230
+ type: "object",
231
+ properties: {},
232
+ },
233
+ };
234
+ export const tools = [
235
+ storeMemoriesTool,
236
+ updateMemoriesTool,
237
+ deleteMemoriesTool,
238
+ searchMemoriesTool,
239
+ getMemoriesTool,
240
+ storeHandoffTool,
241
+ getHandoffTool,
242
+ ];
243
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class EmbeddingsService {
2
+ private modelName;
3
+ private extractor;
4
+ private initPromise;
5
+ private _dimension;
6
+ constructor(modelName: string, dimension: number);
7
+ get dimension(): number;
8
+ private getExtractor;
9
+ embed(text: string): Promise<number[]>;
10
+ embedBatch(texts: string[]): Promise<number[][]>;
11
+ }
12
+ //# sourceMappingURL=embeddings.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.service.d.ts","sourceRoot":"","sources":["../../../src/services/embeddings.service.ts"],"names":[],"mappings":"AAEA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,WAAW,CAAmD;IACtE,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKhD,IAAI,SAAS,IAAI,MAAM,CAEtB;YAEa,YAAY;IAiBpB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMtC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAOvD"}
@@ -0,0 +1,37 @@
1
+ import { pipeline } from "@huggingface/transformers";
2
+ export class EmbeddingsService {
3
+ modelName;
4
+ extractor = null;
5
+ initPromise = null;
6
+ _dimension;
7
+ constructor(modelName, dimension) {
8
+ this.modelName = modelName;
9
+ this._dimension = dimension;
10
+ }
11
+ get dimension() {
12
+ return this._dimension;
13
+ }
14
+ async getExtractor() {
15
+ if (this.extractor) {
16
+ return this.extractor;
17
+ }
18
+ if (!this.initPromise) {
19
+ this.initPromise = pipeline("feature-extraction", this.modelName, { dtype: "fp32" });
20
+ }
21
+ this.extractor = await this.initPromise;
22
+ return this.extractor;
23
+ }
24
+ async embed(text) {
25
+ const extractor = await this.getExtractor();
26
+ const output = await extractor(text, { pooling: "mean", normalize: true });
27
+ return Array.from(output.data);
28
+ }
29
+ async embedBatch(texts) {
30
+ const results = [];
31
+ for (const text of texts) {
32
+ results.push(await this.embed(text));
33
+ }
34
+ return results;
35
+ }
36
+ }
37
+ //# sourceMappingURL=embeddings.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.service.js","sourceRoot":"","sources":["../../../src/services/embeddings.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkC,MAAM,2BAA2B,CAAC;AAErF,MAAM,OAAO,iBAAiB;IACpB,SAAS,CAAS;IAClB,SAAS,GAAqC,IAAI,CAAC;IACnD,WAAW,GAA8C,IAAI,CAAC;IAC9D,UAAU,CAAS;IAE3B,YAAY,SAAiB,EAAE,SAAiB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,QAAQ,CACzB,oBAAoB,EACpB,IAAI,CAAC,SAAS,EACd,EAAE,KAAK,EAAE,MAAM,EAAS,CACa,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAoB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ import type { Memory } from "../types/memory.js";
2
+ import type { MemoryRepository } from "../db/memory.repository.js";
3
+ import type { EmbeddingsService } from "./embeddings.service.js";
4
+ export declare class MemoryService {
5
+ private repository;
6
+ private embeddings;
7
+ constructor(repository: MemoryRepository, embeddings: EmbeddingsService);
8
+ store(content: string, metadata?: Record<string, unknown>, embeddingText?: string): Promise<Memory>;
9
+ get(id: string): Promise<Memory | null>;
10
+ delete(id: string): Promise<boolean>;
11
+ update(id: string, updates: {
12
+ content?: string;
13
+ embeddingText?: string;
14
+ metadata?: Record<string, unknown>;
15
+ }): Promise<Memory | null>;
16
+ search(query: string, limit?: number, includeDeleted?: boolean): Promise<Memory[]>;
17
+ private static readonly UUID_ZERO;
18
+ storeHandoff(args: {
19
+ project: string;
20
+ branch?: string;
21
+ summary: string;
22
+ completed?: string[];
23
+ in_progress_blocked?: string[];
24
+ key_decisions?: string[];
25
+ next_steps?: string[];
26
+ memory_ids?: string[];
27
+ metadata?: Record<string, unknown>;
28
+ }): Promise<Memory>;
29
+ getLatestHandoff(): Promise<Memory | null>;
30
+ }
31
+ //# sourceMappingURL=memory.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.service.d.ts","sourceRoot":"","sources":["../../../src/services/memory.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,aAAa;IAEtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;gBADV,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,iBAAiB;IAGjC,KAAK,CACT,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACtC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAoBZ,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpC,MAAM,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA4BnB,MAAM,CACV,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,EAClB,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC;IA4BpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CACQ;IAEnC,YAAY,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,CAAC;IAwDb,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAGjD"}
@@ -0,0 +1,131 @@
1
+ import { randomUUID } from "crypto";
2
+ import { isDeleted } from "../types/memory.js";
3
+ export class MemoryService {
4
+ repository;
5
+ embeddings;
6
+ constructor(repository, embeddings) {
7
+ this.repository = repository;
8
+ this.embeddings = embeddings;
9
+ }
10
+ async store(content, metadata = {}, embeddingText) {
11
+ const id = randomUUID();
12
+ const now = new Date();
13
+ const textToEmbed = embeddingText ?? content;
14
+ const embedding = await this.embeddings.embed(textToEmbed);
15
+ const memory = {
16
+ id,
17
+ content,
18
+ embedding,
19
+ metadata,
20
+ createdAt: now,
21
+ updatedAt: now,
22
+ supersededBy: null,
23
+ };
24
+ await this.repository.insert(memory);
25
+ return memory;
26
+ }
27
+ async get(id) {
28
+ return await this.repository.findById(id);
29
+ }
30
+ async delete(id) {
31
+ return await this.repository.markDeleted(id);
32
+ }
33
+ async update(id, updates) {
34
+ const existing = await this.repository.findById(id);
35
+ if (!existing) {
36
+ return null;
37
+ }
38
+ const newContent = updates.content ?? existing.content;
39
+ const newMetadata = updates.metadata ?? existing.metadata;
40
+ // Regenerate embedding if content or embeddingText changed
41
+ let newEmbedding = existing.embedding;
42
+ if (updates.content !== undefined || updates.embeddingText !== undefined) {
43
+ const textToEmbed = updates.embeddingText ?? newContent;
44
+ newEmbedding = await this.embeddings.embed(textToEmbed);
45
+ }
46
+ const updatedMemory = {
47
+ ...existing,
48
+ content: newContent,
49
+ embedding: newEmbedding,
50
+ metadata: newMetadata,
51
+ updatedAt: new Date(),
52
+ };
53
+ await this.repository.upsert(updatedMemory);
54
+ return updatedMemory;
55
+ }
56
+ async search(query, limit = 10, includeDeleted = false) {
57
+ const queryEmbedding = await this.embeddings.embed(query);
58
+ const fetchLimit = limit * 3;
59
+ const rows = await this.repository.findSimilar(queryEmbedding, fetchLimit);
60
+ const results = [];
61
+ for (const row of rows) {
62
+ const memory = await this.repository.findById(row.id);
63
+ if (!memory) {
64
+ continue;
65
+ }
66
+ if (!includeDeleted && isDeleted(memory)) {
67
+ continue;
68
+ }
69
+ results.push(memory);
70
+ if (results.length >= limit) {
71
+ break;
72
+ }
73
+ }
74
+ return results;
75
+ }
76
+ static UUID_ZERO = "00000000-0000-0000-0000-000000000000";
77
+ async storeHandoff(args) {
78
+ const now = new Date();
79
+ const date = now.toISOString().slice(0, 10);
80
+ const time = now.toISOString().slice(11, 16);
81
+ const list = (items) => {
82
+ if (!items || items.length === 0) {
83
+ return "- (none)";
84
+ }
85
+ return items.map((i) => `- ${i}`).join("\n");
86
+ };
87
+ const content = `# Handoff - ${args.project}
88
+ **Date:** ${date} ${time} | **Branch:** ${args.branch ?? "unknown"}
89
+
90
+ ## Summary
91
+ ${args.summary}
92
+
93
+ ## Completed
94
+ ${list(args.completed)}
95
+
96
+ ## In Progress / Blocked
97
+ ${list(args.in_progress_blocked)}
98
+
99
+ ## Key Decisions
100
+ ${list(args.key_decisions)}
101
+
102
+ ## Next Steps
103
+ ${list(args.next_steps)}
104
+
105
+ ## Memory IDs
106
+ ${list(args.memory_ids)}`;
107
+ const metadata = {
108
+ ...(args.metadata ?? {}),
109
+ type: "handoff",
110
+ project: args.project,
111
+ date,
112
+ branch: args.branch ?? "unknown",
113
+ memory_ids: args.memory_ids ?? [],
114
+ };
115
+ const memory = {
116
+ id: MemoryService.UUID_ZERO,
117
+ content,
118
+ embedding: new Array(this.embeddings.dimension).fill(0),
119
+ metadata,
120
+ createdAt: now,
121
+ updatedAt: now,
122
+ supersededBy: null,
123
+ };
124
+ await this.repository.upsert(memory);
125
+ return memory;
126
+ }
127
+ async getLatestHandoff() {
128
+ return await this.get(MemoryService.UUID_ZERO);
129
+ }
130
+ }
131
+ //# sourceMappingURL=memory.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../../src/services/memory.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare const DELETED_TOMBSTONE = "DELETED";
2
+ export interface Memory {
3
+ id: string;
4
+ content: string;
5
+ embedding: number[];
6
+ metadata: Record<string, unknown>;
7
+ createdAt: Date;
8
+ updatedAt: Date;
9
+ supersededBy: string | null;
10
+ }
11
+ export interface VectorRow {
12
+ id: string;
13
+ distance: number;
14
+ }
15
+ export declare function isDeleted(memory: Memory): boolean;
16
+ export declare function memoryToDict(memory: Memory): Record<string, unknown>;
17
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/types/memory.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASpE"}
@@ -0,0 +1,15 @@
1
+ export const DELETED_TOMBSTONE = "DELETED";
2
+ export function isDeleted(memory) {
3
+ return memory.supersededBy === DELETED_TOMBSTONE;
4
+ }
5
+ export function memoryToDict(memory) {
6
+ return {
7
+ id: memory.id,
8
+ content: memory.content,
9
+ metadata: memory.metadata,
10
+ createdAt: memory.createdAt.toISOString(),
11
+ updatedAt: memory.updatedAt.toISOString(),
12
+ supersededBy: memory.supersededBy,
13
+ };
14
+ }
15
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/types/memory.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAiB3C,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,YAAY,KAAK,iBAAiB,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC"}