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

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 +12 -8
  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
@@ -1,185 +0,0 @@
1
- import { randomUUID } from "crypto";
2
- import type { Memory } from "../types/memory.js";
3
- import { isDeleted } from "../types/memory.js";
4
- import type { MemoryRepository } from "../db/memory.repository.js";
5
- import type { EmbeddingsService } from "./embeddings.service.js";
6
-
7
- export class MemoryService {
8
- constructor(
9
- private repository: MemoryRepository,
10
- private embeddings: EmbeddingsService
11
- ) {}
12
-
13
- async store(
14
- content: string,
15
- metadata: Record<string, unknown> = {},
16
- embeddingText?: string
17
- ): Promise<Memory> {
18
- const id = randomUUID();
19
- const now = new Date();
20
- const textToEmbed = embeddingText ?? content;
21
- const embedding = await this.embeddings.embed(textToEmbed);
22
-
23
- const memory: Memory = {
24
- id,
25
- content,
26
- embedding,
27
- metadata,
28
- createdAt: now,
29
- updatedAt: now,
30
- supersededBy: null,
31
- };
32
-
33
- await this.repository.insert(memory);
34
- return memory;
35
- }
36
-
37
- async get(id: string): Promise<Memory | null> {
38
- return await this.repository.findById(id);
39
- }
40
-
41
- async delete(id: string): Promise<boolean> {
42
- return await this.repository.markDeleted(id);
43
- }
44
-
45
-
46
- async update(
47
- id: string,
48
- updates: {
49
- content?: string;
50
- embeddingText?: string;
51
- metadata?: Record<string, unknown>;
52
- }
53
- ): Promise<Memory | null> {
54
- const existing = await this.repository.findById(id);
55
- if (!existing) {
56
- return null;
57
- }
58
-
59
- const newContent = updates.content ?? existing.content;
60
- const newMetadata = updates.metadata ?? existing.metadata;
61
-
62
- // Regenerate embedding if content or embeddingText changed
63
- let newEmbedding = existing.embedding;
64
- if (updates.content !== undefined || updates.embeddingText !== undefined) {
65
- const textToEmbed = updates.embeddingText ?? newContent;
66
- newEmbedding = await this.embeddings.embed(textToEmbed);
67
- }
68
-
69
- const updatedMemory: Memory = {
70
- ...existing,
71
- content: newContent,
72
- embedding: newEmbedding,
73
- metadata: newMetadata,
74
- updatedAt: new Date(),
75
- };
76
-
77
- await this.repository.upsert(updatedMemory);
78
- return updatedMemory;
79
- }
80
-
81
- async search(
82
- query: string,
83
- limit: number = 10,
84
- includeDeleted: boolean = false
85
- ): Promise<Memory[]> {
86
- const queryEmbedding = await this.embeddings.embed(query);
87
- const fetchLimit = limit * 3;
88
-
89
- const rows = await this.repository.findSimilar(queryEmbedding, fetchLimit);
90
-
91
- const results: Memory[] = [];
92
-
93
- for (const row of rows) {
94
- const memory = await this.repository.findById(row.id);
95
-
96
- if (!memory) {
97
- continue;
98
- }
99
-
100
- if (!includeDeleted && isDeleted(memory)) {
101
- continue;
102
- }
103
-
104
- results.push(memory);
105
- if (results.length >= limit) {
106
- break;
107
- }
108
- }
109
-
110
- return results;
111
- }
112
-
113
- private static readonly UUID_ZERO =
114
- "00000000-0000-0000-0000-000000000000";
115
-
116
- async storeHandoff(args: {
117
- project: string;
118
- branch?: string;
119
- summary: string;
120
- completed?: string[];
121
- in_progress_blocked?: string[];
122
- key_decisions?: string[];
123
- next_steps?: string[];
124
- memory_ids?: string[];
125
- metadata?: Record<string, unknown>;
126
- }): Promise<Memory> {
127
- const now = new Date();
128
- const date = now.toISOString().slice(0, 10);
129
- const time = now.toISOString().slice(11, 16);
130
-
131
- const list = (items: string[] | undefined) => {
132
- if (!items || items.length === 0) {
133
- return "- (none)";
134
- }
135
- return items.map((i) => `- ${i}`).join("\n");
136
- };
137
-
138
- const content = `# Handoff - ${args.project}
139
- **Date:** ${date} ${time} | **Branch:** ${args.branch ?? "unknown"}
140
-
141
- ## Summary
142
- ${args.summary}
143
-
144
- ## Completed
145
- ${list(args.completed)}
146
-
147
- ## In Progress / Blocked
148
- ${list(args.in_progress_blocked)}
149
-
150
- ## Key Decisions
151
- ${list(args.key_decisions)}
152
-
153
- ## Next Steps
154
- ${list(args.next_steps)}
155
-
156
- ## Memory IDs
157
- ${list(args.memory_ids)}`;
158
-
159
- const metadata: Record<string, unknown> = {
160
- ...(args.metadata ?? {}),
161
- type: "handoff",
162
- project: args.project,
163
- date,
164
- branch: args.branch ?? "unknown",
165
- memory_ids: args.memory_ids ?? [],
166
- };
167
-
168
- const memory: Memory = {
169
- id: MemoryService.UUID_ZERO,
170
- content,
171
- embedding: new Array(this.embeddings.dimension).fill(0),
172
- metadata,
173
- createdAt: now,
174
- updatedAt: now,
175
- supersededBy: null,
176
- };
177
-
178
- await this.repository.upsert(memory);
179
- return memory;
180
- }
181
-
182
- async getLatestHandoff(): Promise<Memory | null> {
183
- return await this.get(MemoryService.UUID_ZERO);
184
- }
185
- }
@@ -1,31 +0,0 @@
1
- export const DELETED_TOMBSTONE = "DELETED";
2
-
3
- export interface Memory {
4
- id: string;
5
- content: string;
6
- embedding: number[];
7
- metadata: Record<string, unknown>;
8
- createdAt: Date;
9
- updatedAt: Date;
10
- supersededBy: string | null;
11
- }
12
-
13
- export interface VectorRow {
14
- id: string;
15
- distance: number;
16
- }
17
-
18
- export function isDeleted(memory: Memory): boolean {
19
- return memory.supersededBy === DELETED_TOMBSTONE;
20
- }
21
-
22
- export function memoryToDict(memory: Memory): Record<string, unknown> {
23
- return {
24
- id: memory.id,
25
- content: memory.content,
26
- metadata: memory.metadata,
27
- createdAt: memory.createdAt.toISOString(),
28
- updatedAt: memory.updatedAt.toISOString(),
29
- supersededBy: memory.supersededBy,
30
- };
31
- }