@aeriondyseti/vector-memory-mcp 1.1.0-dev.2 → 1.1.0-dev.5

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 (96) hide show
  1. package/README.md +24 -11
  2. package/dist/package.json +1 -2
  3. package/dist/src/config/index.d.ts +17 -10
  4. package/dist/src/config/index.d.ts.map +1 -1
  5. package/dist/src/config/index.js +25 -11
  6. package/dist/src/config/index.js.map +1 -1
  7. package/dist/src/db/conversation.repository.d.ts +26 -0
  8. package/dist/src/db/conversation.repository.d.ts.map +1 -0
  9. package/dist/src/db/conversation.repository.js +72 -0
  10. package/dist/src/db/conversation.repository.js.map +1 -0
  11. package/dist/src/db/conversation.schema.d.ts +4 -0
  12. package/dist/src/db/conversation.schema.d.ts.map +1 -0
  13. package/dist/src/db/conversation.schema.js +15 -0
  14. package/dist/src/db/conversation.schema.js.map +1 -0
  15. package/dist/src/db/lancedb-utils.d.ts +13 -3
  16. package/dist/src/db/lancedb-utils.d.ts.map +1 -1
  17. package/dist/src/db/lancedb-utils.js +36 -7
  18. package/dist/src/db/lancedb-utils.js.map +1 -1
  19. package/dist/src/db/memory.repository.d.ts +1 -0
  20. package/dist/src/db/memory.repository.d.ts.map +1 -1
  21. package/dist/src/db/memory.repository.js +18 -7
  22. package/dist/src/db/memory.repository.js.map +1 -1
  23. package/dist/src/http/server.d.ts.map +1 -1
  24. package/dist/src/http/server.js +38 -24
  25. package/dist/src/http/server.js.map +1 -1
  26. package/dist/src/index.js +7 -6
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/mcp/handlers.d.ts +3 -3
  29. package/dist/src/mcp/handlers.d.ts.map +1 -1
  30. package/dist/src/mcp/handlers.js +128 -145
  31. package/dist/src/mcp/handlers.js.map +1 -1
  32. package/dist/src/mcp/tools.d.ts +2 -2
  33. package/dist/src/mcp/tools.d.ts.map +1 -1
  34. package/dist/src/mcp/tools.js +53 -24
  35. package/dist/src/mcp/tools.js.map +1 -1
  36. package/dist/src/services/conversation.service.d.ts +38 -0
  37. package/dist/src/services/conversation.service.d.ts.map +1 -0
  38. package/dist/src/services/conversation.service.js +252 -0
  39. package/dist/src/services/conversation.service.js.map +1 -0
  40. package/dist/src/services/memory.service.d.ts +10 -27
  41. package/dist/src/services/memory.service.d.ts.map +1 -1
  42. package/dist/src/services/memory.service.js +94 -94
  43. package/dist/src/services/memory.service.js.map +1 -1
  44. package/dist/src/services/parsers/claude-code.parser.d.ts +8 -0
  45. package/dist/src/services/parsers/claude-code.parser.d.ts.map +1 -0
  46. package/dist/src/services/parsers/claude-code.parser.js +191 -0
  47. package/dist/src/services/parsers/claude-code.parser.js.map +1 -0
  48. package/dist/src/services/parsers/types.d.ts +9 -0
  49. package/dist/src/services/parsers/types.d.ts.map +1 -0
  50. package/dist/src/services/parsers/types.js +2 -0
  51. package/dist/src/services/parsers/types.js.map +1 -0
  52. package/dist/src/types/conversation.d.ts +99 -0
  53. package/dist/src/types/conversation.d.ts.map +1 -0
  54. package/dist/src/types/conversation.js +2 -0
  55. package/dist/src/types/conversation.js.map +1 -0
  56. package/package.json +1 -2
  57. package/src/config/index.ts +39 -21
  58. package/src/db/conversation.repository.ts +120 -0
  59. package/src/db/conversation.schema.ts +33 -0
  60. package/src/db/lancedb-utils.ts +35 -7
  61. package/src/db/memory.repository.ts +18 -7
  62. package/src/http/server.ts +43 -25
  63. package/src/index.ts +10 -11
  64. package/src/mcp/handlers.ts +144 -151
  65. package/src/mcp/tools.ts +54 -25
  66. package/src/services/conversation.service.ts +354 -0
  67. package/src/services/memory.service.ts +136 -119
  68. package/src/services/parsers/claude-code.parser.ts +242 -0
  69. package/src/services/parsers/types.ts +14 -0
  70. package/src/types/conversation.ts +108 -0
  71. package/dist/src/db/conversation-history.repository.d.ts +0 -24
  72. package/dist/src/db/conversation-history.repository.d.ts.map +0 -1
  73. package/dist/src/db/conversation-history.repository.js +0 -184
  74. package/dist/src/db/conversation-history.repository.js.map +0 -1
  75. package/dist/src/db/conversation-history.schema.d.ts +0 -10
  76. package/dist/src/db/conversation-history.schema.d.ts.map +0 -1
  77. package/dist/src/db/conversation-history.schema.js +0 -31
  78. package/dist/src/db/conversation-history.schema.js.map +0 -1
  79. package/dist/src/services/conversation-history.service.d.ts +0 -64
  80. package/dist/src/services/conversation-history.service.d.ts.map +0 -1
  81. package/dist/src/services/conversation-history.service.js +0 -244
  82. package/dist/src/services/conversation-history.service.js.map +0 -1
  83. package/dist/src/services/session-parser.d.ts +0 -59
  84. package/dist/src/services/session-parser.d.ts.map +0 -1
  85. package/dist/src/services/session-parser.js +0 -147
  86. package/dist/src/services/session-parser.js.map +0 -1
  87. package/dist/src/types/conversation-history.d.ts +0 -74
  88. package/dist/src/types/conversation-history.d.ts.map +0 -1
  89. package/dist/src/types/conversation-history.js +0 -2
  90. package/dist/src/types/conversation-history.js.map +0 -1
  91. package/hooks/session-start.ts +0 -100
  92. package/src/db/conversation-history.repository.ts +0 -255
  93. package/src/db/conversation-history.schema.ts +0 -40
  94. package/src/services/conversation-history.service.ts +0 -320
  95. package/src/services/session-parser.ts +0 -232
  96. package/src/types/conversation-history.ts +0 -82
package/README.md CHANGED
@@ -14,7 +14,7 @@ A local-first MCP server that provides vector-based memory storage. Uses local e
14
14
  - **Local & Private** - All embeddings generated locally, data stored in local LanceDB
15
15
  - **Semantic Search** - Vector similarity search with configurable scoring
16
16
  - **Batch Operations** - Store, update, delete, and retrieve multiple memories at once
17
- - **Session Checkpoints** - Save and restore project context between sessions
17
+ - **Session Waypoints** - Save and restore project context between sessions
18
18
  - **MCP Native** - Standard protocol, works with any MCP-compatible client
19
19
 
20
20
  ---
@@ -61,8 +61,12 @@ Restart your MCP client. You now have access to:
61
61
  | `get_memories` | Retrieve memories by ID (accepts array) |
62
62
  | `update_memories` | Update existing memories |
63
63
  | `delete_memories` | Remove memories (accepts array) |
64
- | `store_checkpoint` | Save session context for later |
65
- | `get_checkpoint` | Restore session context |
64
+ | `report_memory_usefulness` | Vote on whether a memory was useful |
65
+ | `set_waypoint` | Save session context for later |
66
+ | `get_waypoint` | Restore session context |
67
+ | `index_conversations` | Index Claude Code session logs as searchable history |
68
+ | `list_indexed_sessions` | Browse indexed conversation sessions |
69
+ | `reindex_session` | Force reindex of a specific session |
66
70
 
67
71
  ---
68
72
 
@@ -80,23 +84,32 @@ You: "What did we decide about the database?"
80
84
  Assistant: [calls search_memories with relevant query]
81
85
  ```
82
86
 
83
- **Session checkpoints:**
87
+ **Session waypoints:**
84
88
  ```
85
89
  You: "Save context for next session"
86
- Assistant: [calls store_checkpoint with summary, completed items, next steps]
90
+ Assistant: [calls set_waypoint with summary, completed items, next steps]
91
+ ```
92
+
93
+ **Conversation history** (requires `--enable-history`):
94
+ ```
95
+ You: "What did we discuss about the API design last week?"
96
+ Assistant: [calls search_memories with history_only: true, history_before/after filters]
87
97
  ```
88
98
 
89
99
  ---
90
100
 
91
101
  ## Configuration
92
102
 
93
- Environment variables:
103
+ CLI flags:
94
104
 
95
- | Variable | Default | Description |
96
- |----------|---------|-------------|
97
- | `VECTOR_MEMORY_DB_PATH` | `.vector-memory/memories.db` | Database location |
98
- | `VECTOR_MEMORY_MODEL` | `Xenova/all-MiniLM-L6-v2` | Embedding model |
99
- | `VECTOR_MEMORY_HTTP_PORT` | `3271` | HTTP server port |
105
+ | Flag | Default | Description |
106
+ |------|---------|-------------|
107
+ | `--db-file`, `-d` | `.vector-memory/memories.db` | Database location |
108
+ | `--port`, `-p` | `3271` | HTTP server port |
109
+ | `--no-http` | *(HTTP enabled)* | Disable HTTP/SSE transport |
110
+ | `--enable-history` | *(disabled)* | Enable conversation history indexing |
111
+ | `--history-path` | *(auto-detect)* | Path to session log directory |
112
+ | `--history-weight` | `0.75` | Weight for history results in unified search |
100
113
 
101
114
  ---
102
115
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeriondyseti/vector-memory-mcp",
3
- "version": "1.1.0-dev.2",
3
+ "version": "1.1.0-dev.5",
4
4
  "description": "A zero-configuration RAG memory server for MCP clients",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -11,7 +11,6 @@
11
11
  "dist",
12
12
  "src",
13
13
  "scripts",
14
- "hooks",
15
14
  "README.md",
16
15
  "LICENSE"
17
16
  ],
@@ -1,5 +1,13 @@
1
1
  export declare const VERSION: string;
2
2
  export type TransportMode = "stdio" | "http" | "both";
3
+ export interface ConversationHistoryConfig {
4
+ enabled: boolean;
5
+ sessionLogPath: string | null;
6
+ historyWeight: number;
7
+ chunkOverlap: number;
8
+ maxChunkMessages: number;
9
+ indexSubagents: boolean;
10
+ }
3
11
  export interface Config {
4
12
  dbPath: string;
5
13
  embeddingModel: string;
@@ -8,27 +16,26 @@ export interface Config {
8
16
  httpHost: string;
9
17
  enableHttp: boolean;
10
18
  transportMode: TransportMode;
11
- conversationHistory: {
12
- enabled: boolean;
13
- sessionPath: string | null;
14
- historyWeight: number;
15
- };
19
+ conversationHistory: ConversationHistoryConfig;
16
20
  }
17
21
  export interface ConfigOverrides {
18
22
  dbPath?: string;
19
23
  httpPort?: number;
20
24
  enableHttp?: boolean;
21
25
  transportMode?: TransportMode;
22
- conversationHistory?: {
23
- enabled?: boolean;
24
- sessionPath?: string;
25
- historyWeight?: number;
26
- };
26
+ enableHistory?: boolean;
27
+ historyPath?: string;
28
+ historyWeight?: number;
27
29
  }
28
30
  export declare function loadConfig(overrides?: ConfigOverrides): Config;
29
31
  /**
30
32
  * Parse CLI arguments into config overrides.
31
33
  */
32
34
  export declare function parseCliArgs(argv: string[]): ConfigOverrides;
35
+ /**
36
+ * Resolve the session log path for conversation history indexing.
37
+ * Returns the configured path, or auto-detects Claude Code's session directory.
38
+ */
39
+ export declare function resolveSessionLogPath(config: ConversationHistoryConfig): string;
33
40
  export declare const config: Config;
34
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QAAsB,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mBAAmB,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAaD,wBAAgB,UAAU,CAAC,SAAS,GAAE,eAAoB,GAAG,MAAM,CAmBlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CA2B5D;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,QAAsB,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,yBAAyB,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,UAAU,CAAC,SAAS,GAAE,eAAoB,GAAG,MAAM,CAsBlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAyB5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAO/E;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import arg from "arg";
2
+ import { homedir } from "os";
2
3
  import { isAbsolute, join } from "path";
3
4
  import packageJson from "../../package.json" with { type: "json" };
4
5
  export const VERSION = packageJson.version;
@@ -24,9 +25,12 @@ export function loadConfig(overrides = {}) {
24
25
  enableHttp,
25
26
  transportMode,
26
27
  conversationHistory: {
27
- enabled: overrides.conversationHistory?.enabled ?? false,
28
- sessionPath: overrides.conversationHistory?.sessionPath ?? null,
29
- historyWeight: overrides.conversationHistory?.historyWeight ?? 0.5,
28
+ enabled: overrides.enableHistory ?? false,
29
+ sessionLogPath: overrides.historyPath ?? null,
30
+ historyWeight: overrides.historyWeight ?? 0.75,
31
+ chunkOverlap: 1,
32
+ maxChunkMessages: 10,
33
+ indexSubagents: false,
30
34
  },
31
35
  };
32
36
  }
@@ -38,8 +42,9 @@ export function parseCliArgs(argv) {
38
42
  "--db-file": String,
39
43
  "--port": Number,
40
44
  "--no-http": Boolean,
41
- "--conversation-history": Boolean,
42
- "--session-path": String,
45
+ "--enable-history": Boolean,
46
+ "--history-path": String,
47
+ "--history-weight": Number,
43
48
  // Aliases
44
49
  "-d": "--db-file",
45
50
  "-p": "--port",
@@ -48,14 +53,23 @@ export function parseCliArgs(argv) {
48
53
  dbPath: args["--db-file"],
49
54
  httpPort: args["--port"],
50
55
  enableHttp: args["--no-http"] ? false : undefined,
51
- conversationHistory: args["--conversation-history"] || args["--session-path"]
52
- ? {
53
- enabled: args["--conversation-history"],
54
- sessionPath: args["--session-path"],
55
- }
56
- : undefined,
56
+ enableHistory: args["--enable-history"] ?? undefined,
57
+ historyPath: args["--history-path"],
58
+ historyWeight: args["--history-weight"],
57
59
  };
58
60
  }
61
+ /**
62
+ * Resolve the session log path for conversation history indexing.
63
+ * Returns the configured path, or auto-detects Claude Code's session directory.
64
+ */
65
+ export function resolveSessionLogPath(config) {
66
+ if (config.sessionLogPath) {
67
+ return resolvePath(config.sessionLogPath);
68
+ }
69
+ // Auto-detect Claude Code session log directory
70
+ const claudeProjectsDir = join(homedir(), ".claude", "projects");
71
+ return claudeProjectsDir;
72
+ }
59
73
  // Default config for imports that don't use CLI args
60
74
  export const config = loadConfig();
61
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AA+B3C,yDAAyD;AACzD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC7E,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,YAA6B,EAAE;IACxD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,OAAO,CAAC;IACzD,yEAAyE;IACzE,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC;IAEhD,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,eAAe,CAAC;QACxD,cAAc,EAAE,uBAAuB;QACvC,kBAAkB,EAAE,2BAA2B;QAC/C,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,iBAAiB;QACjD,QAAQ,EAAE,iBAAiB;QAC3B,UAAU;QACV,aAAa;QACb,mBAAmB,EAAE;YACnB,OAAO,EAAE,SAAS,CAAC,mBAAmB,EAAE,OAAO,IAAI,KAAK;YACxD,WAAW,EAAE,SAAS,CAAC,mBAAmB,EAAE,WAAW,IAAI,IAAI;YAC/D,aAAa,EAAE,SAAS,CAAC,mBAAmB,EAAE,aAAa,IAAI,GAAG;SACnE;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,IAAI,GAAG,GAAG,CACd;QACE,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,OAAO;QACpB,wBAAwB,EAAE,OAAO;QACjC,gBAAgB,EAAE,MAAM;QAExB,UAAU;QACV,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;KACf,EACD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAC3B,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QACxB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACjD,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC;YAC3E,CAAC,CAAC;gBACE,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC;gBACvC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;aACpC;YACH,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAkC3C,yDAAyD;AACzD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC7E,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEtC,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,YAA6B,EAAE;IACxD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,OAAO,CAAC;IACzD,yEAAyE;IACzE,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC;IAEhD,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,eAAe,CAAC;QACxD,cAAc,EAAE,uBAAuB;QACvC,kBAAkB,EAAE,2BAA2B;QAC/C,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,iBAAiB;QACjD,QAAQ,EAAE,iBAAiB;QAC3B,UAAU;QACV,aAAa;QACb,mBAAmB,EAAE;YACnB,OAAO,EAAE,SAAS,CAAC,aAAa,IAAI,KAAK;YACzC,cAAc,EAAE,SAAS,CAAC,WAAW,IAAI,IAAI;YAC7C,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,IAAI;YAC9C,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,EAAE;YACpB,cAAc,EAAE,KAAK;SACtB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,IAAI,GAAG,GAAG,CACd;QACE,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,OAAO;QAC3B,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,MAAM;QAE1B,UAAU;QACV,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;KACf,EACD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAC3B,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QACxB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACjD,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS;QACpD,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACnC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiC;IACrE,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IACD,gDAAgD;IAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import * as lancedb from "@lancedb/lancedb";
2
+ import type { ConversationHybridRow, HistoryFilters } from "../types/conversation.js";
3
+ export declare class ConversationRepository {
4
+ private db;
5
+ private tablePromise;
6
+ private ensureFtsIndex;
7
+ private getReranker;
8
+ constructor(db: lancedb.Connection);
9
+ private getTable;
10
+ private rowToConversationHybridRow;
11
+ insertBatch(rows: Array<{
12
+ id: string;
13
+ vector: number[];
14
+ content: string;
15
+ metadata: string;
16
+ created_at: number;
17
+ session_id: string;
18
+ role: string;
19
+ message_index_start: number;
20
+ message_index_end: number;
21
+ project: string;
22
+ }>): Promise<void>;
23
+ deleteBySessionId(sessionId: string): Promise<void>;
24
+ findHybrid(embedding: number[], query: string, limit: number, filters?: HistoryFilters): Promise<ConversationHybridRow[]>;
25
+ }
26
+ //# sourceMappingURL=conversation.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.repository.d.ts","sourceRoot":"","sources":["../../../src/db/conversation.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAM5C,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,0BAA0B,CAAC;AASlC,qBAAa,sBAAsB;IASrB,OAAO,CAAC,EAAE;IARtB,OAAO,CAAC,YAAY,CAA+B;IAGnD,OAAO,CAAC,cAAc,CAAyC;IAG/D,OAAO,CAAC,WAAW,CAAyB;gBAExB,EAAE,EAAE,OAAO,CAAC,UAAU;IAE1C,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,0BAA0B;IAa5B,WAAW,CACf,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC;IAQV,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,UAAU,CACd,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,qBAAqB,EAAE,CAAC;CA+BpC"}
@@ -0,0 +1,72 @@
1
+ import { CONVERSATION_TABLE_NAME, conversationSchema, } from "./conversation.schema.js";
2
+ import { getOrCreateTable, createFtsMutex, createRerankerMutex, escapeSql, safeParseJsonObject, } from "./lancedb-utils.js";
3
+ export class ConversationRepository {
4
+ db;
5
+ tablePromise = null;
6
+ // FTS index mutex — recreated after data mutations to force re-check
7
+ ensureFtsIndex = createFtsMutex(() => this.getTable());
8
+ // Cached reranker — k=60 is constant, no need to recreate per search
9
+ getReranker = createRerankerMutex();
10
+ constructor(db) {
11
+ this.db = db;
12
+ }
13
+ getTable() {
14
+ if (!this.tablePromise) {
15
+ this.tablePromise = getOrCreateTable(this.db, CONVERSATION_TABLE_NAME, conversationSchema).catch((err) => {
16
+ this.tablePromise = null;
17
+ throw err;
18
+ });
19
+ }
20
+ return this.tablePromise;
21
+ }
22
+ rowToConversationHybridRow(row) {
23
+ const metadata = safeParseJsonObject(row.metadata);
24
+ return {
25
+ id: row.id,
26
+ content: row.content,
27
+ metadata,
28
+ createdAt: new Date(row.created_at),
29
+ rrfScore: row._relevance_score ?? 0,
30
+ };
31
+ }
32
+ async insertBatch(rows) {
33
+ if (rows.length === 0)
34
+ return;
35
+ const table = await this.getTable();
36
+ await table.add(rows);
37
+ // Reset FTS mutex so index existence is re-verified after new data
38
+ this.ensureFtsIndex = createFtsMutex(() => this.getTable());
39
+ }
40
+ async deleteBySessionId(sessionId) {
41
+ const table = await this.getTable();
42
+ await table.delete(`session_id = '${escapeSql(sessionId)}'`);
43
+ this.ensureFtsIndex = createFtsMutex(() => this.getTable());
44
+ }
45
+ async findHybrid(embedding, query, limit, filters) {
46
+ await this.ensureFtsIndex();
47
+ const table = await this.getTable();
48
+ const reranker = await this.getReranker();
49
+ let queryBuilder = table
50
+ .query()
51
+ .nearestTo(embedding)
52
+ .fullTextSearch(query)
53
+ .rerank(reranker);
54
+ const conditions = [];
55
+ if (filters?.sessionId)
56
+ conditions.push(`session_id = '${escapeSql(filters.sessionId)}'`);
57
+ if (filters?.role)
58
+ conditions.push(`role = '${escapeSql(filters.role)}'`);
59
+ if (filters?.project)
60
+ conditions.push(`project = '${escapeSql(filters.project)}'`);
61
+ if (filters?.after)
62
+ conditions.push(`created_at > ${filters.after.getTime()}`);
63
+ if (filters?.before)
64
+ conditions.push(`created_at < ${filters.before.getTime()}`);
65
+ if (conditions.length > 0) {
66
+ queryBuilder = queryBuilder.where(conditions.join(" AND "));
67
+ }
68
+ const results = await queryBuilder.limit(limit).toArray();
69
+ return results.map((row) => this.rowToConversationHybridRow(row));
70
+ }
71
+ }
72
+ //# sourceMappingURL=conversation.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.repository.js","sourceRoot":"","sources":["../../../src/db/conversation.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Schema } from "apache-arrow";
2
+ export declare const CONVERSATION_TABLE_NAME = "conversation_history";
3
+ export declare const conversationSchema: Schema<any>;
4
+ //# sourceMappingURL=conversation.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.schema.d.ts","sourceRoot":"","sources":["../../../src/db/conversation.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAQP,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAE9D,eAAO,MAAM,kBAAkB,aAmB7B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Schema, Field, FixedSizeList, Float32, Utf8, Timestamp, TimeUnit, Int32, } from "apache-arrow";
2
+ export const CONVERSATION_TABLE_NAME = "conversation_history";
3
+ export const conversationSchema = new Schema([
4
+ new Field("id", new Utf8(), false),
5
+ new Field("vector", new FixedSizeList(384, new Field("item", new Float32(), false)), false),
6
+ new Field("content", new Utf8(), false),
7
+ new Field("metadata", new Utf8(), false), // JSON string
8
+ new Field("created_at", new Timestamp(TimeUnit.MILLISECOND), false),
9
+ new Field("session_id", new Utf8(), false),
10
+ new Field("role", new Utf8(), false),
11
+ new Field("message_index_start", new Int32(), false),
12
+ new Field("message_index_end", new Int32(), false),
13
+ new Field("project", new Utf8(), false),
14
+ ]);
15
+ //# sourceMappingURL=conversation.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.schema.js","sourceRoot":"","sources":["../../../src/db/conversation.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,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;IAClC,IAAI,KAAK,CACP,QAAQ,EACR,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,EAC/D,KAAK,CACN;IACD,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,IAAI,KAAK,CACP,YAAY,EACZ,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EACnC,KAAK,CACN;IACD,IAAI,KAAK,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;IAC1C,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,qBAAqB,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC;IACpD,IAAI,KAAK,CAAC,mBAAmB,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC;IAClD,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;CACxC,CAAC,CAAC"}
@@ -2,15 +2,25 @@ import * as lancedb from "@lancedb/lancedb";
2
2
  import { rerankers, type Table } from "@lancedb/lancedb";
3
3
  import type { Schema } from "apache-arrow";
4
4
  /**
5
- * Escapes a string for use in LanceDB/DataFusion SQL WHERE clauses.
6
- * Doubles single quotes to prevent SQL injection (standard SQL escaping).
5
+ * Escape a string value for safe interpolation into LanceDB/DataFusion SQL WHERE clauses.
6
+ *
7
+ * DataFusion uses ANSI SQL string literal rules:
8
+ * - String literals are delimited by single quotes
9
+ * - Single quotes within strings are escaped by doubling: ' -> ''
10
+ * - Backslashes are NOT escape characters (treated literally)
7
11
  */
8
- export declare function escapeLanceDbString(value: string): string;
12
+ export declare function escapeSql(value: string): string;
13
+ /** Default k parameter for Reciprocal Rank Fusion reranking. */
14
+ export declare const RRF_K = 60;
9
15
  /**
10
16
  * Converts LanceDB's Arrow Vector type to a plain number[].
11
17
  * LanceDB returns an Arrow Vector object which is iterable but not an array.
12
18
  */
13
19
  export declare function arrowVectorToArray(value: unknown): number[];
20
+ /**
21
+ * Safely parse a JSON string into an object, returning an empty object on failure.
22
+ */
23
+ export declare function safeParseJsonObject(raw: string): Record<string, unknown>;
14
24
  /**
15
25
  * Opens an existing table or creates it with the given schema.
16
26
  * Does NOT cache — callers should cache the returned Table if desired.
@@ -1 +1 @@
1
- {"version":3,"file":"lancedb-utils.d.ts","sourceRoot":"","sources":["../../../src/db/lancedb-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAS,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAI3D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,OAAO,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC,CAMhB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC7B,MAAM,OAAO,CAAC,IAAI,CAAC,CA0BrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,GAAE,MAAW,GACb,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAYtC"}
1
+ {"version":3,"file":"lancedb-utils.d.ts","sourceRoot":"","sources":["../../../src/db/lancedb-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAS,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,gEAAgE;AAChE,eAAO,MAAM,KAAK,KAAK,CAAC;AAExB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAI3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMxE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,OAAO,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC,CAgBhB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAC7B,MAAM,OAAO,CAAC,IAAI,CAAC,CA0BrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,GAAE,MAAc,GAChB,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAYtC"}
@@ -1,11 +1,17 @@
1
1
  import { Index, rerankers } from "@lancedb/lancedb";
2
2
  /**
3
- * Escapes a string for use in LanceDB/DataFusion SQL WHERE clauses.
4
- * Doubles single quotes to prevent SQL injection (standard SQL escaping).
3
+ * Escape a string value for safe interpolation into LanceDB/DataFusion SQL WHERE clauses.
4
+ *
5
+ * DataFusion uses ANSI SQL string literal rules:
6
+ * - String literals are delimited by single quotes
7
+ * - Single quotes within strings are escaped by doubling: ' -> ''
8
+ * - Backslashes are NOT escape characters (treated literally)
5
9
  */
6
- export function escapeLanceDbString(value) {
10
+ export function escapeSql(value) {
7
11
  return value.replace(/'/g, "''");
8
12
  }
13
+ /** Default k parameter for Reciprocal Rank Fusion reranking. */
14
+ export const RRF_K = 60;
9
15
  /**
10
16
  * Converts LanceDB's Arrow Vector type to a plain number[].
11
17
  * LanceDB returns an Arrow Vector object which is iterable but not an array.
@@ -15,16 +21,39 @@ export function arrowVectorToArray(value) {
15
21
  ? value
16
22
  : Array.from(value);
17
23
  }
24
+ /**
25
+ * Safely parse a JSON string into an object, returning an empty object on failure.
26
+ */
27
+ export function safeParseJsonObject(raw) {
28
+ try {
29
+ return JSON.parse(raw);
30
+ }
31
+ catch {
32
+ return {};
33
+ }
34
+ }
18
35
  /**
19
36
  * Opens an existing table or creates it with the given schema.
20
37
  * Does NOT cache — callers should cache the returned Table if desired.
21
38
  */
22
39
  export async function getOrCreateTable(db, name, schema) {
23
- const names = await db.tableNames();
24
- if (names.includes(name)) {
40
+ try {
41
+ return await db.openTable(name);
42
+ }
43
+ catch (err) {
44
+ // Only proceed to create if the table was not found
45
+ const message = err instanceof Error ? err.message : String(err);
46
+ if (!message.includes("was not found") && !message.includes("does not exist")) {
47
+ throw err;
48
+ }
49
+ }
50
+ try {
51
+ return await db.createTable(name, [], { schema });
52
+ }
53
+ catch {
54
+ // Another caller may have created it concurrently
25
55
  return await db.openTable(name);
26
56
  }
27
- return await db.createTable(name, [], { schema });
28
57
  }
29
58
  /**
30
59
  * Creates a mutex-guarded function that ensures an FTS index exists on a table's content column.
@@ -62,7 +91,7 @@ export function createFtsMutex(getTable) {
62
91
  * Creates a promise-mutex for RRFReranker instantiation.
63
92
  * Same pattern as createFtsMutex: create once, cache forever, reset on error.
64
93
  */
65
- export function createRerankerMutex(k = 60) {
94
+ export function createRerankerMutex(k = RRF_K) {
66
95
  let promise = null;
67
96
  return () => {
68
97
  if (!promise) {
@@ -1 +1 @@
1
- {"version":3,"file":"lancedb-utils.js","sourceRoot":"","sources":["../../../src/db/lancedb-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAc,MAAM,kBAAkB,CAAC;AAGhE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK;QACP,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,KAAyB,CAAc,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAsB,EACtB,IAAY,EACZ,MAAc;IAEd,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA8B;IAE9B,IAAI,OAAO,GAAyB,IAAI,CAAC;IAEzC,OAAO,GAAG,EAAE;QACV,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,CACpE,CAAC;YAEF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE;oBACjC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE;iBACpB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EAAE;IAEd,IAAI,OAAO,GAA0C,IAAI,CAAC;IAE1D,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lancedb-utils.js","sourceRoot":"","sources":["../../../src/db/lancedb-utils.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ export declare class MemoryRepository {
24
24
  insert(memory: Memory): Promise<void>;
25
25
  upsert(memory: Memory): Promise<void>;
26
26
  findById(id: string): Promise<Memory | null>;
27
+ findByIds(ids: string[]): Promise<Memory[]>;
27
28
  markDeleted(id: string): Promise<boolean>;
28
29
  /**
29
30
  * Performs hybrid search combining vector similarity and full-text search.
@@ -1 +1 @@
1
- {"version":3,"file":"memory.repository.d.ts","sourceRoot":"","sources":["../../../src/db/memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,gBAAgB;IAUf,OAAO,CAAC,EAAE;IARtB,OAAO,CAAC,gBAAgB,CAA8B;IAGtD,OAAO,CAAC,cAAc,CAAsB;IAG5C,OAAO,CAAC,WAAW,CAAyB;gBAExB,EAAE,EAAE,OAAO,CAAC,UAAU;YAI5B,QAAQ;IAWtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;YACW,qBAAqB;IAqBnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAW5C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/C;;;;;;;;OAQG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAsB1F"}
1
+ {"version":3,"file":"memory.repository.d.ts","sourceRoot":"","sources":["../../../src/db/memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,gBAAgB;IAUf,OAAO,CAAC,EAAE;IARtB,OAAO,CAAC,gBAAgB,CAA8B;IAGtD,OAAO,CAAC,cAAc,CAAsB;IAG5C,OAAO,CAAC,WAAW,CAAyB;gBAExB,EAAE,EAAE,OAAO,CAAC,UAAU;YAI5B,QAAQ;IAWtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;YACW,qBAAqB;IAqBnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAW5C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW3C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/C;;;;;;;;OAQG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAsB1F"}
@@ -1,5 +1,5 @@
1
1
  import { TABLE_NAME, memorySchema } from "./schema.js";
2
- import { arrowVectorToArray, createFtsMutex, createRerankerMutex, escapeLanceDbString } from "./lancedb-utils.js";
2
+ import { arrowVectorToArray, createFtsMutex, createRerankerMutex, escapeSql, safeParseJsonObject } from "./lancedb-utils.js";
3
3
  import { DELETED_TOMBSTONE, } from "../types/memory.js";
4
4
  export class MemoryRepository {
5
5
  db;
@@ -66,7 +66,7 @@ export class MemoryRepository {
66
66
  id: row.id,
67
67
  content: row.content,
68
68
  embedding: arrowVectorToArray(row.vector),
69
- metadata: JSON.parse(row.metadata),
69
+ metadata: safeParseJsonObject(row.metadata),
70
70
  createdAt: new Date(row.created_at),
71
71
  updatedAt: new Date(row.updated_at),
72
72
  supersededBy: row.superseded_by,
@@ -96,12 +96,12 @@ export class MemoryRepository {
96
96
  }
97
97
  async upsert(memory) {
98
98
  const table = await this.getTable();
99
- const existing = await table.query().where(`id = '${escapeLanceDbString(memory.id)}'`).limit(1).toArray();
99
+ const existing = await table.query().where(`id = '${escapeSql(memory.id)}'`).limit(1).toArray();
100
100
  if (existing.length === 0) {
101
101
  return await this.insert(memory);
102
102
  }
103
103
  await table.update({
104
- where: `id = '${escapeLanceDbString(memory.id)}'`,
104
+ where: `id = '${escapeSql(memory.id)}'`,
105
105
  values: {
106
106
  vector: memory.embedding,
107
107
  content: memory.content,
@@ -117,22 +117,33 @@ export class MemoryRepository {
117
117
  }
118
118
  async findById(id) {
119
119
  const table = await this.getTable();
120
- const results = await table.query().where(`id = '${escapeLanceDbString(id)}'`).limit(1).toArray();
120
+ const results = await table.query().where(`id = '${escapeSql(id)}'`).limit(1).toArray();
121
121
  if (results.length === 0) {
122
122
  return null;
123
123
  }
124
124
  return this.rowToMemory(results[0]);
125
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
+ }
126
137
  async markDeleted(id) {
127
138
  const table = await this.getTable();
128
139
  // Verify existence first to match previous behavior (return false if not found)
129
- const existing = await table.query().where(`id = '${escapeLanceDbString(id)}'`).limit(1).toArray();
140
+ const existing = await table.query().where(`id = '${escapeSql(id)}'`).limit(1).toArray();
130
141
  if (existing.length === 0) {
131
142
  return false;
132
143
  }
133
144
  const now = Date.now();
134
145
  await table.update({
135
- where: `id = '${escapeLanceDbString(id)}'`,
146
+ where: `id = '${escapeSql(id)}'`,
136
147
  values: {
137
148
  superseded_by: DELETED_TOMBSTONE,
138
149
  updated_at: now,
@@ -1 +1 @@
1
- {"version":3,"file":"memory.repository.js","sourceRoot":"","sources":["../../../src/db/memory.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.repository.js","sourceRoot":"","sources":["../../../src/db/memory.repository.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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,CAyJhF;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"}
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"}