@aeriondyseti/vector-memory-mcp 1.1.0-dev.6 → 2.0.0-rc

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 (106) hide show
  1. package/README.md +22 -4
  2. package/package.json +12 -18
  3. package/scripts/migrate-from-lancedb.ts +56 -0
  4. package/scripts/smoke-test.ts +699 -0
  5. package/scripts/test-runner.ts +11 -1
  6. package/src/db/connection.ts +18 -4
  7. package/src/db/conversation.repository.ts +164 -79
  8. package/src/db/memory.repository.ts +182 -170
  9. package/src/db/migrations.ts +70 -0
  10. package/src/db/sqlite-utils.ts +78 -0
  11. package/src/http/server.ts +40 -35
  12. package/src/index.ts +33 -3
  13. package/src/mcp/server.ts +2 -1
  14. package/src/migration.ts +254 -0
  15. package/dist/package.json +0 -71
  16. package/dist/scripts/test-runner.d.ts +0 -9
  17. package/dist/scripts/test-runner.d.ts.map +0 -1
  18. package/dist/scripts/test-runner.js +0 -61
  19. package/dist/scripts/test-runner.js.map +0 -1
  20. package/dist/scripts/warmup.d.ts +0 -8
  21. package/dist/scripts/warmup.d.ts.map +0 -1
  22. package/dist/scripts/warmup.js +0 -61
  23. package/dist/scripts/warmup.js.map +0 -1
  24. package/dist/src/config/index.d.ts +0 -41
  25. package/dist/src/config/index.d.ts.map +0 -1
  26. package/dist/src/config/index.js +0 -75
  27. package/dist/src/config/index.js.map +0 -1
  28. package/dist/src/db/connection.d.ts +0 -3
  29. package/dist/src/db/connection.d.ts.map +0 -1
  30. package/dist/src/db/connection.js +0 -10
  31. package/dist/src/db/connection.js.map +0 -1
  32. package/dist/src/db/conversation.repository.d.ts +0 -26
  33. package/dist/src/db/conversation.repository.d.ts.map +0 -1
  34. package/dist/src/db/conversation.repository.js +0 -73
  35. package/dist/src/db/conversation.repository.js.map +0 -1
  36. package/dist/src/db/conversation.schema.d.ts +0 -4
  37. package/dist/src/db/conversation.schema.d.ts.map +0 -1
  38. package/dist/src/db/conversation.schema.js +0 -15
  39. package/dist/src/db/conversation.schema.js.map +0 -1
  40. package/dist/src/db/lancedb-utils.d.ts +0 -57
  41. package/dist/src/db/lancedb-utils.d.ts.map +0 -1
  42. package/dist/src/db/lancedb-utils.js +0 -124
  43. package/dist/src/db/lancedb-utils.js.map +0 -1
  44. package/dist/src/db/memory.repository.d.ts +0 -40
  45. package/dist/src/db/memory.repository.d.ts.map +0 -1
  46. package/dist/src/db/memory.repository.js +0 -183
  47. package/dist/src/db/memory.repository.js.map +0 -1
  48. package/dist/src/db/schema.d.ts +0 -7
  49. package/dist/src/db/schema.d.ts.map +0 -1
  50. package/dist/src/db/schema.js +0 -19
  51. package/dist/src/db/schema.js.map +0 -1
  52. package/dist/src/http/mcp-transport.d.ts +0 -19
  53. package/dist/src/http/mcp-transport.d.ts.map +0 -1
  54. package/dist/src/http/mcp-transport.js +0 -191
  55. package/dist/src/http/mcp-transport.js.map +0 -1
  56. package/dist/src/http/server.d.ts +0 -13
  57. package/dist/src/http/server.d.ts.map +0 -1
  58. package/dist/src/http/server.js +0 -224
  59. package/dist/src/http/server.js.map +0 -1
  60. package/dist/src/index.d.ts +0 -3
  61. package/dist/src/index.d.ts.map +0 -1
  62. package/dist/src/index.js +0 -68
  63. package/dist/src/index.js.map +0 -1
  64. package/dist/src/mcp/handlers.d.ts +0 -15
  65. package/dist/src/mcp/handlers.d.ts.map +0 -1
  66. package/dist/src/mcp/handlers.js +0 -313
  67. package/dist/src/mcp/handlers.js.map +0 -1
  68. package/dist/src/mcp/server.d.ts +0 -5
  69. package/dist/src/mcp/server.d.ts.map +0 -1
  70. package/dist/src/mcp/server.js +0 -22
  71. package/dist/src/mcp/server.js.map +0 -1
  72. package/dist/src/mcp/tools.d.ts +0 -13
  73. package/dist/src/mcp/tools.d.ts.map +0 -1
  74. package/dist/src/mcp/tools.js +0 -352
  75. package/dist/src/mcp/tools.js.map +0 -1
  76. package/dist/src/services/conversation.service.d.ts +0 -38
  77. package/dist/src/services/conversation.service.d.ts.map +0 -1
  78. package/dist/src/services/conversation.service.js +0 -252
  79. package/dist/src/services/conversation.service.js.map +0 -1
  80. package/dist/src/services/embeddings.service.d.ts +0 -12
  81. package/dist/src/services/embeddings.service.d.ts.map +0 -1
  82. package/dist/src/services/embeddings.service.js +0 -37
  83. package/dist/src/services/embeddings.service.js.map +0 -1
  84. package/dist/src/services/memory.service.d.ts +0 -40
  85. package/dist/src/services/memory.service.d.ts.map +0 -1
  86. package/dist/src/services/memory.service.js +0 -258
  87. package/dist/src/services/memory.service.js.map +0 -1
  88. package/dist/src/services/parsers/claude-code.parser.d.ts +0 -8
  89. package/dist/src/services/parsers/claude-code.parser.d.ts.map +0 -1
  90. package/dist/src/services/parsers/claude-code.parser.js +0 -191
  91. package/dist/src/services/parsers/claude-code.parser.js.map +0 -1
  92. package/dist/src/services/parsers/types.d.ts +0 -9
  93. package/dist/src/services/parsers/types.d.ts.map +0 -1
  94. package/dist/src/services/parsers/types.js +0 -2
  95. package/dist/src/services/parsers/types.js.map +0 -1
  96. package/dist/src/types/conversation.d.ts +0 -99
  97. package/dist/src/types/conversation.d.ts.map +0 -1
  98. package/dist/src/types/conversation.js +0 -2
  99. package/dist/src/types/conversation.js.map +0 -1
  100. package/dist/src/types/memory.d.ts +0 -30
  101. package/dist/src/types/memory.d.ts.map +0 -1
  102. package/dist/src/types/memory.js +0 -18
  103. package/dist/src/types/memory.js.map +0 -1
  104. package/src/db/conversation.schema.ts +0 -33
  105. package/src/db/lancedb-utils.ts +0 -142
  106. package/src/db/schema.ts +0 -38
@@ -1,183 +0,0 @@
1
- import { TABLE_NAME, memorySchema } from "./schema.js";
2
- import { arrowTimestampToDate, arrowVectorToArray, createFtsMutex, createRerankerMutex, escapeSql, safeParseJsonObject } from "./lancedb-utils.js";
3
- import { DELETED_TOMBSTONE, } from "../types/memory.js";
4
- export class MemoryRepository {
5
- db;
6
- // Mutex for schema migration - runs once per instance to add missing columns
7
- migrationPromise = null;
8
- // FTS index mutex — once created, the promise is never cleared (index persists in LanceDB)
9
- ensureFtsIndex;
10
- // Cached reranker — k=60 is constant, no need to recreate per search
11
- getReranker = createRerankerMutex();
12
- constructor(db) {
13
- this.db = db;
14
- this.ensureFtsIndex = createFtsMutex(() => this.getTable());
15
- }
16
- async getTable() {
17
- const names = await this.db.tableNames();
18
- if (names.includes(TABLE_NAME)) {
19
- const table = await this.db.openTable(TABLE_NAME);
20
- await this.ensureMigration(table);
21
- return table;
22
- }
23
- // Create with empty data to initialize schema
24
- return await this.db.createTable(TABLE_NAME, [], { schema: memorySchema });
25
- }
26
- /**
27
- * Ensures schema migration has run. Uses a mutex pattern identical to ensureFtsIndex.
28
- * Adds columns introduced after the initial schema (usefulness, access_count, last_accessed).
29
- */
30
- ensureMigration(table) {
31
- if (this.migrationPromise) {
32
- return this.migrationPromise;
33
- }
34
- this.migrationPromise = this.migrateSchemaIfNeeded(table).catch((error) => {
35
- this.migrationPromise = null;
36
- throw error;
37
- });
38
- return this.migrationPromise;
39
- }
40
- /**
41
- * Inspects the existing table schema and adds any missing columns with safe defaults.
42
- * This handles databases created before the hybrid memory system was introduced.
43
- */
44
- async migrateSchemaIfNeeded(table) {
45
- const schema = await table.schema();
46
- const existingFields = new Set(schema.fields.map((f) => f.name));
47
- const migrations = [];
48
- if (!existingFields.has("usefulness")) {
49
- migrations.push({ name: "usefulness", valueSql: "cast(0.0 as float)" });
50
- }
51
- if (!existingFields.has("access_count")) {
52
- migrations.push({ name: "access_count", valueSql: "cast(0 as int)" });
53
- }
54
- if (!existingFields.has("last_accessed")) {
55
- migrations.push({ name: "last_accessed", valueSql: "cast(NULL as timestamp)" });
56
- }
57
- if (migrations.length > 0) {
58
- await table.addColumns(migrations);
59
- }
60
- }
61
- /**
62
- * Converts a raw LanceDB row to a Memory object.
63
- */
64
- rowToMemory(row) {
65
- return {
66
- id: row.id,
67
- content: row.content,
68
- embedding: arrowVectorToArray(row.vector),
69
- metadata: safeParseJsonObject(row.metadata),
70
- createdAt: arrowTimestampToDate(row.created_at),
71
- updatedAt: arrowTimestampToDate(row.updated_at),
72
- supersededBy: row.superseded_by,
73
- usefulness: row.usefulness ?? 0,
74
- accessCount: row.access_count ?? 0,
75
- lastAccessed: row.last_accessed
76
- ? arrowTimestampToDate(row.last_accessed)
77
- : null,
78
- };
79
- }
80
- async insert(memory) {
81
- const table = await this.getTable();
82
- await table.add([
83
- {
84
- id: memory.id,
85
- vector: memory.embedding,
86
- content: memory.content,
87
- metadata: JSON.stringify(memory.metadata),
88
- created_at: memory.createdAt.getTime(),
89
- updated_at: memory.updatedAt.getTime(),
90
- superseded_by: memory.supersededBy,
91
- usefulness: memory.usefulness,
92
- access_count: memory.accessCount,
93
- last_accessed: memory.lastAccessed?.getTime() ?? null,
94
- },
95
- ]);
96
- }
97
- async upsert(memory) {
98
- const table = await this.getTable();
99
- const existing = await table.query().where(`id = '${escapeSql(memory.id)}'`).limit(1).toArray();
100
- if (existing.length === 0) {
101
- return await this.insert(memory);
102
- }
103
- await table.update({
104
- where: `id = '${escapeSql(memory.id)}'`,
105
- values: {
106
- vector: memory.embedding,
107
- content: memory.content,
108
- metadata: JSON.stringify(memory.metadata),
109
- created_at: memory.createdAt.getTime(),
110
- updated_at: memory.updatedAt.getTime(),
111
- superseded_by: memory.supersededBy,
112
- usefulness: memory.usefulness,
113
- access_count: memory.accessCount,
114
- last_accessed: memory.lastAccessed?.getTime() ?? null,
115
- },
116
- });
117
- }
118
- async findById(id) {
119
- const table = await this.getTable();
120
- const results = await table.query().where(`id = '${escapeSql(id)}'`).limit(1).toArray();
121
- if (results.length === 0) {
122
- return null;
123
- }
124
- return this.rowToMemory(results[0]);
125
- }
126
- async findByIds(ids) {
127
- if (ids.length === 0)
128
- return [];
129
- const table = await this.getTable();
130
- const inList = ids.map((id) => `'${escapeSql(id)}'`).join(", ");
131
- const results = await table
132
- .query()
133
- .where(`id IN (${inList})`)
134
- .toArray();
135
- return results.map((row) => this.rowToMemory(row));
136
- }
137
- async markDeleted(id) {
138
- const table = await this.getTable();
139
- // Verify existence first to match previous behavior (return false if not found)
140
- const existing = await table.query().where(`id = '${escapeSql(id)}'`).limit(1).toArray();
141
- if (existing.length === 0) {
142
- return false;
143
- }
144
- const now = Date.now();
145
- await table.update({
146
- where: `id = '${escapeSql(id)}'`,
147
- values: {
148
- superseded_by: DELETED_TOMBSTONE,
149
- updated_at: now,
150
- },
151
- });
152
- return true;
153
- }
154
- /**
155
- * Performs hybrid search combining vector similarity and full-text search.
156
- * Uses RRF (Reciprocal Rank Fusion) to combine rankings from both search methods.
157
- *
158
- * @param embedding - Query embedding vector
159
- * @param query - Text query for full-text search
160
- * @param limit - Maximum number of results to return
161
- * @returns Array of HybridRow containing full Memory data plus RRF score
162
- */
163
- async findHybrid(embedding, query, limit) {
164
- await this.ensureFtsIndex();
165
- const table = await this.getTable();
166
- const reranker = await this.getReranker();
167
- const results = await table
168
- .query()
169
- .nearestTo(embedding)
170
- .fullTextSearch(query)
171
- .rerank(reranker)
172
- .limit(limit)
173
- .toArray();
174
- return results.map((row) => {
175
- const memory = this.rowToMemory(row);
176
- return {
177
- ...memory,
178
- rrfScore: row._relevance_score ?? 0,
179
- };
180
- });
181
- }
182
- }
183
- //# sourceMappingURL=memory.repository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.repository.js","sourceRoot":"","sources":["../../../src/db/memory.repository.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { Schema, Field, FixedSizeList, Float32, Timestamp } from "apache-arrow";
2
- export declare const EMBEDDING_DIMENSION = 384;
3
- export declare const vectorField: () => Field<FixedSizeList<Float32>>;
4
- export declare const timestampField: (name: string, nullable?: boolean) => Field<Timestamp<import("apache-arrow").Type.Timestamp | import("apache-arrow").Type.TimestampSecond | import("apache-arrow").Type.TimestampMillisecond | import("apache-arrow").Type.TimestampMicrosecond | import("apache-arrow").Type.TimestampNanosecond>>;
5
- export declare const TABLE_NAME = "memories";
6
- export declare const memorySchema: Schema<any>;
7
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,EACL,aAAa,EACb,OAAO,EAEP,SAAS,EAGV,MAAM,cAAc,CAAC;AAGtB,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,WAAW,qCAKrB,CAAC;AAEJ,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,kBAAgB,kQACU,CAAC;AAExE,eAAO,MAAM,UAAU,aAAa,CAAC;AAErC,eAAO,MAAM,YAAY,aAWvB,CAAC"}
@@ -1,19 +0,0 @@
1
- import { Schema, Field, FixedSizeList, Float32, Utf8, Timestamp, TimeUnit, Int32, } from "apache-arrow";
2
- // Shared field helpers — used by both memory and conversation history schemas
3
- export const EMBEDDING_DIMENSION = 384;
4
- export const vectorField = () => new Field("vector", new FixedSizeList(EMBEDDING_DIMENSION, new Field("item", new Float32())), false);
5
- export const timestampField = (name, nullable = false) => new Field(name, new Timestamp(TimeUnit.MILLISECOND, "UTC"), nullable);
6
- export const TABLE_NAME = "memories";
7
- export const memorySchema = new Schema([
8
- new Field("id", new Utf8(), false),
9
- vectorField(),
10
- new Field("content", new Utf8(), false),
11
- new Field("metadata", new Utf8(), false), // JSON string
12
- timestampField("created_at"),
13
- timestampField("updated_at"),
14
- new Field("superseded_by", new Utf8(), true), // Nullable
15
- new Field("usefulness", new Float32(), false),
16
- new Field("access_count", new Int32(), false),
17
- timestampField("last_accessed", true),
18
- ]);
19
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,EACL,aAAa,EACb,OAAO,EACP,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,GACN,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAC9B,IAAI,KAAK,CACP,QAAQ,EACR,IAAI,aAAa,CAAC,mBAAmB,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC,EACxE,KAAK,CACN,CAAC;AAEJ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE,CAC/D,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC;IACrC,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;IAClC,WAAW,EAAE;IACb,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;IACvC,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,cAAc;IACxD,cAAc,CAAC,YAAY,CAAC;IAC5B,cAAc,CAAC,YAAY,CAAC;IAC5B,IAAI,KAAK,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW;IACzD,IAAI,KAAK,CAAC,YAAY,EAAE,IAAI,OAAO,EAAE,EAAE,KAAK,CAAC;IAC7C,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC;IAC7C,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC;CACtC,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * MCP HTTP Transport Handler
3
- *
4
- * Provides StreamableHTTP transport for MCP over HTTP.
5
- * and other HTTP-based MCP clients to connect to the memory server.
6
- *
7
- * This implementation handles the MCP protocol directly using Hono's streaming
8
- * capabilities, since StreamableHTTPServerTransport expects Node.js req/res objects.
9
- */
10
- import { Hono } from "hono";
11
- import type { MemoryService } from "../services/memory.service.js";
12
- /**
13
- * Creates MCP routes for a Hono app.
14
- *
15
- * Uses InMemoryTransport internally and bridges to HTTP/SSE manually,
16
- * since StreamableHTTPServerTransport requires Node.js req/res objects.
17
- */
18
- export declare function createMcpRoutes(memoryService: MemoryService): Hono;
19
- //# sourceMappingURL=mcp-transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-transport.d.ts","sourceRoot":"","sources":["../../../src/http/mcp-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAe5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAUnE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAkLlE"}
@@ -1,191 +0,0 @@
1
- /**
2
- * MCP HTTP Transport Handler
3
- *
4
- * Provides StreamableHTTP transport for MCP over HTTP.
5
- * and other HTTP-based MCP clients to connect to the memory server.
6
- *
7
- * This implementation handles the MCP protocol directly using Hono's streaming
8
- * capabilities, since StreamableHTTPServerTransport expects Node.js req/res objects.
9
- */
10
- import { Hono } from "hono";
11
- import { streamSSE } from "hono/streaming";
12
- import { randomUUID } from "node:crypto";
13
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
14
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
15
- import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
16
- import { tools } from "../mcp/tools.js";
17
- import { handleToolCall } from "../mcp/handlers.js";
18
- /**
19
- * Creates MCP routes for a Hono app.
20
- *
21
- * Uses InMemoryTransport internally and bridges to HTTP/SSE manually,
22
- * since StreamableHTTPServerTransport requires Node.js req/res objects.
23
- */
24
- export function createMcpRoutes(memoryService) {
25
- const app = new Hono();
26
- // Store active sessions by session ID
27
- const sessions = new Map();
28
- /**
29
- * Creates a new MCP server instance configured with memory tools.
30
- */
31
- async function createSession() {
32
- const server = new Server({ name: "vector-memory-mcp", version: "0.6.0" }, { capabilities: { tools: {} } });
33
- server.setRequestHandler(ListToolsRequestSchema, async () => {
34
- return { tools };
35
- });
36
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
37
- const { name, arguments: args } = request.params;
38
- return handleToolCall(name, args, memoryService);
39
- });
40
- // Create linked in-memory transports
41
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
42
- // Connect server to its transport
43
- await server.connect(serverTransport);
44
- const session = {
45
- server,
46
- serverTransport,
47
- clientTransport,
48
- pendingResponses: new Map(),
49
- sseClients: new Set(),
50
- };
51
- // Handle messages from server (responses and notifications)
52
- clientTransport.onmessage = (message) => {
53
- // Check if this is a response to a pending request
54
- if ("id" in message && message.id !== undefined) {
55
- const resolver = session.pendingResponses.get(message.id);
56
- if (resolver) {
57
- resolver(message);
58
- session.pendingResponses.delete(message.id);
59
- return;
60
- }
61
- }
62
- // Otherwise, broadcast to SSE clients (notifications)
63
- for (const sendToClient of session.sseClients) {
64
- sendToClient(message);
65
- }
66
- };
67
- return session;
68
- }
69
- /**
70
- * Handle POST requests - session initialization and message handling
71
- */
72
- app.post("/mcp", async (c) => {
73
- const sessionId = c.req.header("mcp-session-id");
74
- const body = await c.req.json();
75
- let session;
76
- let newSessionId;
77
- if (sessionId && sessions.has(sessionId)) {
78
- // Reuse existing session
79
- session = sessions.get(sessionId);
80
- }
81
- else if (isInitializeRequest(body)) {
82
- // New session initialization
83
- newSessionId = randomUUID();
84
- session = await createSession();
85
- sessions.set(newSessionId, session);
86
- console.error(`[vector-memory-mcp] MCP session initialized: ${newSessionId}`);
87
- }
88
- else {
89
- // Invalid request - no session ID and not an initialize request
90
- return c.json({
91
- jsonrpc: "2.0",
92
- error: {
93
- code: -32000,
94
- message: "Invalid session. Send initialize request without session ID to start.",
95
- },
96
- id: body.id ?? null,
97
- }, 400);
98
- }
99
- // Send message to server and wait for response
100
- const response = await sendAndWaitForResponse(session, body);
101
- // Include session ID header for new sessions
102
- if (newSessionId) {
103
- c.header("mcp-session-id", newSessionId);
104
- }
105
- return c.json(response);
106
- });
107
- /**
108
- * Handle GET requests - SSE stream for server-to-client notifications
109
- */
110
- app.get("/mcp", async (c) => {
111
- const sessionId = c.req.header("mcp-session-id");
112
- if (!sessionId || !sessions.has(sessionId)) {
113
- return c.json({
114
- jsonrpc: "2.0",
115
- error: { code: -32000, message: "Invalid or missing session ID" },
116
- id: null,
117
- }, 400);
118
- }
119
- const session = sessions.get(sessionId);
120
- return streamSSE(c, async (stream) => {
121
- // Register this SSE client
122
- const sendMessage = (message) => {
123
- stream.writeSSE({
124
- data: JSON.stringify(message),
125
- event: "message",
126
- });
127
- };
128
- session.sseClients.add(sendMessage);
129
- // Keep connection open
130
- try {
131
- // Send a ping every 30 seconds to keep connection alive
132
- while (true) {
133
- await stream.sleep(30000);
134
- await stream.writeSSE({ event: "ping", data: "" });
135
- }
136
- }
137
- finally {
138
- session.sseClients.delete(sendMessage);
139
- }
140
- });
141
- });
142
- /**
143
- * Handle DELETE requests - session termination
144
- */
145
- app.delete("/mcp", async (c) => {
146
- const sessionId = c.req.header("mcp-session-id");
147
- if (!sessionId || !sessions.has(sessionId)) {
148
- return c.json({
149
- jsonrpc: "2.0",
150
- error: { code: -32000, message: "Invalid or missing session ID" },
151
- id: null,
152
- }, 400);
153
- }
154
- const session = sessions.get(sessionId);
155
- // Close transports
156
- await session.clientTransport.close();
157
- await session.serverTransport.close();
158
- await session.server.close();
159
- sessions.delete(sessionId);
160
- console.error(`[vector-memory-mcp] MCP session closed: ${sessionId}`);
161
- return c.json({ success: true });
162
- });
163
- return app;
164
- }
165
- /**
166
- * Send a message to the server and wait for its response.
167
- */
168
- async function sendAndWaitForResponse(session, message) {
169
- return new Promise((resolve) => {
170
- // Register response handler for requests (messages with id)
171
- if ("id" in message && message.id !== undefined) {
172
- session.pendingResponses.set(message.id, resolve);
173
- }
174
- // Send message to server
175
- session.clientTransport.send(message);
176
- // For notifications (no id), resolve immediately with empty response
177
- if (!("id" in message) || message.id === undefined) {
178
- resolve({ jsonrpc: "2.0" });
179
- }
180
- });
181
- }
182
- /**
183
- * Check if a message is an initialize request.
184
- */
185
- function isInitializeRequest(body) {
186
- return (typeof body === "object" &&
187
- body !== null &&
188
- "method" in body &&
189
- body.method === "initialize");
190
- }
191
- //# sourceMappingURL=mcp-transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-transport.js","sourceRoot":"","sources":["../../../src/http/mcp-transport.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Hono } from "hono";
2
- import type { MemoryService } from "../services/memory.service.js";
3
- import type { Config } from "../config/index.js";
4
- export interface HttpServerOptions {
5
- memoryService: MemoryService;
6
- config: Config;
7
- }
8
- export declare function createHttpApp(memoryService: MemoryService, config: Config): Hono;
9
- export declare function startHttpServer(memoryService: MemoryService, config: Config): Promise<{
10
- stop: () => void;
11
- port: number;
12
- }>;
13
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAqDjD,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA2KhF;AAED,wBAAsB,eAAe,CACnC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC7C"}