code-session-memory 0.4.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +75 -58
  2. package/dist/mcp/index.js +23 -2
  3. package/dist/mcp/index.js.map +1 -1
  4. package/dist/mcp/server.d.ts +4 -2
  5. package/dist/mcp/server.d.ts.map +1 -1
  6. package/dist/mcp/server.js +11 -3
  7. package/dist/mcp/server.js.map +1 -1
  8. package/dist/src/cli-sessions.d.ts +6 -7
  9. package/dist/src/cli-sessions.d.ts.map +1 -1
  10. package/dist/src/cli-sessions.js +238 -178
  11. package/dist/src/cli-sessions.js.map +1 -1
  12. package/dist/src/cli.js +272 -12
  13. package/dist/src/cli.js.map +1 -1
  14. package/dist/src/cursor-to-messages.d.ts +64 -0
  15. package/dist/src/cursor-to-messages.d.ts.map +1 -0
  16. package/dist/src/cursor-to-messages.js +243 -0
  17. package/dist/src/cursor-to-messages.js.map +1 -0
  18. package/dist/src/cursor-transcript-to-messages.d.ts +22 -0
  19. package/dist/src/cursor-transcript-to-messages.d.ts.map +1 -0
  20. package/dist/src/cursor-transcript-to-messages.js +79 -0
  21. package/dist/src/cursor-transcript-to-messages.js.map +1 -0
  22. package/dist/src/database.d.ts +13 -2
  23. package/dist/src/database.d.ts.map +1 -1
  24. package/dist/src/database.js +42 -8
  25. package/dist/src/database.js.map +1 -1
  26. package/dist/src/indexer-cli-claude.js +25 -3
  27. package/dist/src/indexer-cli-claude.js.map +1 -1
  28. package/dist/src/indexer-cli-cursor.d.ts +25 -0
  29. package/dist/src/indexer-cli-cursor.d.ts.map +1 -0
  30. package/dist/src/indexer-cli-cursor.js +118 -0
  31. package/dist/src/indexer-cli-cursor.js.map +1 -0
  32. package/dist/src/indexer.d.ts.map +1 -1
  33. package/dist/src/indexer.js +46 -9
  34. package/dist/src/indexer.js.map +1 -1
  35. package/dist/src/types.d.ts +6 -1
  36. package/dist/src/types.d.ts.map +1 -1
  37. package/package.json +3 -2
  38. package/skill/memory.md +7 -2
package/README.md CHANGED
@@ -1,30 +1,30 @@
1
1
  # code-session-memory
2
2
 
3
- Automatic vector memory for [OpenCode](https://opencode.ai) and [Claude Code](https://claude.ai/code) sessions — shared across both tools.
3
+ Automatic vector memory for [OpenCode](https://opencode.ai), [Claude Code](https://claude.ai/code), and [Cursor](https://www.cursor.com) sessions — shared across all three tools.
4
4
 
5
- Every time the AI agent finishes its turn, `code-session-memory` automatically indexes the new messages into a local [sqlite-vec](https://github.com/asg017/sqlite-vec) vector database. Past sessions become semantically searchable — both by the AI agent (via the MCP server) and by you. Sessions from both OpenCode and Claude Code are stored in the **same database**, so memory is shared across tools.
5
+ Every time the AI agent finishes its turn, `code-session-memory` automatically indexes the new messages into a local [sqlite-vec](https://github.com/asg017/sqlite-vec) vector database. Past sessions become semantically searchable — both by the AI agent (via the MCP server) and by you. Sessions from OpenCode, Claude Code, and Cursor are stored in the **same database**, so memory is shared across tools.
6
6
 
7
7
  ## How it works
8
8
 
9
9
  ```
10
- OpenCode (session.idle event) Claude Code (Stop hook)
11
-
12
- fetches messages via REST API │ reads JSONL transcript
13
-
14
- session-to-md transcript-to-messages
15
-
16
- └───────────────┬───────────────────────┘
17
-
18
- chunker → heading-aware chunks (≤1000 tokens, 10% overlap)
19
-
20
-
21
- embedder → OpenAI text-embedding-3-large (3072 dims)
22
-
23
-
24
- sqlite-vec DB → ~/.local/share/code-session-memory/sessions.db
25
-
26
-
27
- MCP server → query_sessions / get_session_chunks tools
10
+ OpenCode (session.idle) Claude Code (Stop hook) Cursor (stop hook)
11
+
12
+ │ REST API messagesJSONL transcript │ JSONL transcript
13
+
14
+ session-to-md transcript-to-messages cursor-transcript-to-messages
15
+
16
+ └───────────────────────────┬────────────────────────┘
17
+
18
+ chunker → heading-aware chunks (≤1000 tokens, 10% overlap)
19
+
20
+
21
+ embedder → OpenAI text-embedding-3-large (3072 dims)
22
+ (all chunks batched in a single API call per turn)
23
+
24
+ sqlite-vec DB → ~/.local/share/code-session-memory/sessions.db
25
+
26
+
27
+ MCP server → query_sessions / get_session_chunks tools
28
28
  ```
29
29
 
30
30
  Only **new messages** are indexed on each turn — previously indexed messages are skipped (tracked via `sessions_meta` table). This makes each indexing pass fast, even in long sessions.
@@ -35,7 +35,7 @@ Only **new messages** are indexed on each turn — previously indexed messages a
35
35
 
36
36
  - Node.js ≥ 18
37
37
  - An OpenAI API key (for `text-embedding-3-large`)
38
- - OpenCode and/or Claude Code installed
38
+ - OpenCode, Claude Code, and/or Cursor installed
39
39
 
40
40
  ### Install
41
41
 
@@ -43,7 +43,7 @@ Only **new messages** are indexed on each turn — previously indexed messages a
43
43
  npx code-session-memory install
44
44
  ```
45
45
 
46
- The `install` command sets up everything for both tools in one shot:
46
+ The `install` command sets up everything for all three tools in one shot:
47
47
 
48
48
  **OpenCode:**
49
49
  1. Copies the plugin to `~/.config/opencode/plugins/code-session-memory.ts`
@@ -51,15 +51,20 @@ The `install` command sets up everything for both tools in one shot:
51
51
  3. Writes the MCP server entry into `~/.config/opencode/opencode.json`
52
52
 
53
53
  **Claude Code:**
54
- 1. Writes a `Stop` hook to `~/.claude.json` (user-scoped global config; fires after each agent turn)
54
+ 1. Writes a `Stop` hook to `~/.claude/settings.json` (fires after each agent turn)
55
55
  2. Injects the skill into `~/.claude/CLAUDE.md` (with idempotent markers)
56
56
  3. Writes the MCP server entry into `~/.claude.json`
57
57
 
58
- **Both tools share:**
58
+ **Cursor:**
59
+ 1. Writes a `stop` hook to `~/.cursor/hooks.json` (fires after each agent turn; requires Cursor v2.5+)
60
+ 2. Writes the MCP server entry into `~/.cursor/mcp.json`
61
+ 3. Copies the skill to `~/.cursor/skills/code-session-memory/SKILL.md`
62
+
63
+ **All tools share:**
59
64
  - The same database at `~/.local/share/code-session-memory/sessions.db`
60
65
  - The same MCP server for querying past sessions
61
66
 
62
- Then **restart OpenCode / Claude Code** to activate.
67
+ Then **restart OpenCode / Claude Code / Cursor** to activate.
63
68
 
64
69
  ### Set your API key
65
70
 
@@ -111,8 +116,10 @@ Semantic search across all indexed sessions.
111
116
  |---|---|---|---|
112
117
  | `queryText` | string | yes | Natural language query |
113
118
  | `project` | string | no | Filter by project directory path |
114
- | `source` | string | no | Filter by tool: `"opencode"` or `"claude-code"` |
119
+ | `source` | string | no | Filter by tool: `"opencode"`, `"claude-code"`, or `"cursor"` |
115
120
  | `limit` | number | no | Max results (default: 5) |
121
+ | `fromDate` | string | no | Return chunks indexed on or after this date (ISO 8601, e.g. `"2026-02-01"`) |
122
+ | `toDate` | string | no | Return chunks indexed on or before this date (ISO 8601, e.g. `"2026-02-20"`) |
116
123
 
117
124
  Example result:
118
125
  ```
@@ -142,8 +149,7 @@ Retrieve the full ordered content of a specific session message. Use the `sessio
142
149
  You can browse, inspect, and delete indexed sessions directly from the CLI:
143
150
 
144
151
  ```bash
145
- npx code-session-memory sessions # interactive browser
146
- npx code-session-memory sessions --filter # with source/date filter step
152
+ npx code-session-memory sessions # interactive browser (source → date → session)
147
153
  ```
148
154
 
149
155
  The interactive browser lists all sessions with their title, date, source tool, and chunk count. Select a session to:
@@ -155,11 +161,9 @@ You can also `print` or `delete` directly. Without an ID, an interactive picker
155
161
 
156
162
  ```bash
157
163
  npx code-session-memory sessions print # pick interactively, then print
158
- npx code-session-memory sessions print --filter # filter first, then pick and print
159
164
  npx code-session-memory sessions print <id> # print directly by session ID
160
165
 
161
166
  npx code-session-memory sessions delete # pick interactively, then delete
162
- npx code-session-memory sessions delete --filter # filter first, then pick and delete
163
167
  npx code-session-memory sessions delete <id> # delete directly by session ID
164
168
  ```
165
169
 
@@ -182,10 +186,6 @@ How can I add JWT authentication to the Express middleware?
182
186
  ...
183
187
  ```
184
188
 
185
- **Filtering options** (with `--filter`):
186
- - Source: All tools / OpenCode / Claude Code
187
- - Date range: Last 7 / 30 / 90 days, last N days (custom), or older than N days (custom)
188
-
189
189
  > **Note:** Deleting a session only removes it from the database. If the original session files still exist on disk, the session will be re-indexed automatically on the next agent turn.
190
190
 
191
191
  ### Asking the agent about past sessions
@@ -208,6 +208,8 @@ Show me how we solved the TypeScript config issue.
208
208
  | `OPENAI_API_KEY` | — | **Required.** Used for embedding generation. |
209
209
  | `OPENCODE_MEMORY_DB_PATH` | `~/.local/share/code-session-memory/sessions.db` | Override the database path. |
210
210
  | `OPENCODE_CONFIG_DIR` | `~/.config/opencode` | Override the OpenCode config directory. |
211
+ | `CLAUDE_CONFIG_DIR` | `~/.claude` | Override the Claude Code config directory. |
212
+ | `CURSOR_CONFIG_DIR` | `~/.cursor` | Override the Cursor config directory. |
211
213
  | `OPENAI_MODEL` | `text-embedding-3-large` | Override the embedding model. |
212
214
 
213
215
  ### Database path
@@ -230,19 +232,22 @@ code-session-memory/
230
232
  │ ├── chunker.ts # Heading-aware markdown chunker
231
233
  │ ├── embedder.ts # OpenAI embeddings (batched)
232
234
  │ ├── session-to-md.ts # OpenCode SDK messages → markdown
233
- │ ├── transcript-to-messages.ts # Claude Code JSONL transcript parser
234
- │ ├── indexer.ts # Orchestrator: incremental indexing
235
- │ ├── indexer-cli.ts # Node.js subprocess (called by OpenCode plugin)
236
- │ ├── indexer-cli-claude.ts # Node.js subprocess (called by Claude Code hook)
237
- │ ├── cli.ts # install / status / uninstall / reset-db commands
238
- └── cli-sessions.ts # sessions list / print / delete (interactive TUI)
235
+ │ ├── transcript-to-messages.ts # Claude Code JSONL transcript parser
236
+ │ ├── cursor-to-messages.ts # Cursor state.vscdb reader (metadata + title)
237
+ │ ├── cursor-transcript-to-messages.ts # Cursor JSONL transcript parser FullMessage[]
238
+ │ ├── indexer.ts # Orchestrator: incremental indexing
239
+ │ ├── indexer-cli.ts # Node.js subprocess (called by OpenCode plugin)
240
+ ├── indexer-cli-claude.ts # Node.js subprocess (called by Claude Code hook)
241
+ │ ├── indexer-cli-cursor.ts # Node.js subprocess (called by Cursor stop hook)
242
+ │ ├── cli.ts # install / status / uninstall / reset-db commands
243
+ │ └── cli-sessions.ts # sessions list / print / delete / purge (TUI)
239
244
  ├── mcp/
240
245
  │ ├── server.ts # MCP query handlers (testable, injected deps)
241
246
  │ └── index.ts # MCP stdio server entry point
242
247
  ├── plugin/
243
248
  │ └── memory.ts # OpenCode plugin (session.idle hook)
244
249
  ├── skill/
245
- │ └── memory.md # Skill instructions (injected into both tools)
250
+ │ └── memory.md # Skill instructions (injected into all tools)
246
251
  ├── scripts/
247
252
  │ └── generate-fixtures.ts # Generates committed e2e test fixtures (run manually)
248
253
  └── tests/
@@ -252,9 +257,12 @@ code-session-memory/
252
257
  ├── indexer.test.ts
253
258
  ├── mcp-server.test.ts
254
259
  ├── session-to-md.test.ts
255
- ├── e2e-claude.test.ts # End-to-end: Claude Code pipeline
256
- ├── e2e-opencode.test.ts # End-to-end: OpenCode pipeline
257
- └── fixtures/ # Committed session files (generated by generate-fixtures)
260
+ ├── cursor-to-messages.test.ts # Unit tests: Cursor SQLite reader
261
+ ├── cursor-transcript-to-messages.test.ts # Unit tests: Cursor JSONL parser
262
+ ├── e2e-claude.test.ts # End-to-end: Claude Code pipeline
263
+ ├── e2e-opencode.test.ts # End-to-end: OpenCode pipeline
264
+ ├── e2e-cursor.test.ts # End-to-end: Cursor pipeline
265
+ └── fixtures/ # Committed session files (generated by generate-fixtures)
258
266
  ```
259
267
 
260
268
  ## Development
@@ -287,22 +295,25 @@ Tests use [Vitest](https://vitest.dev) and run without any external dependencies
287
295
  - E2e tests use committed fixture files in `tests/fixtures/` (real transcripts, no CLI calls during `npm test`)
288
296
 
289
297
  ```
290
- ✓ tests/chunker.test.ts (15 tests)
291
- ✓ tests/mcp-server.test.ts (13 tests)
292
- ✓ tests/session-to-md.test.ts (18 tests)
293
- ✓ tests/embedder.test.ts (9 tests)
294
- ✓ tests/database.test.ts (25 tests)
295
- ✓ tests/indexer.test.ts (8 tests)
296
- ✓ tests/e2e-claude.test.ts (16 tests)
297
- ✓ tests/e2e-opencode.test.ts (14 tests)
298
- Tests 118 passed
298
+ ✓ tests/chunker.test.ts (15 tests)
299
+ ✓ tests/mcp-server.test.ts (14 tests)
300
+ ✓ tests/session-to-md.test.ts (21 tests)
301
+ ✓ tests/embedder.test.ts (9 tests)
302
+ ✓ tests/database.test.ts (27 tests)
303
+ ✓ tests/indexer.test.ts (9 tests)
304
+ ✓ tests/cursor-to-messages.test.ts (15 tests)
305
+ ✓ tests/cursor-transcript-to-messages.test.ts (7 tests)
306
+ ✓ tests/e2e-claude.test.ts (18 tests)
307
+ ✓ tests/e2e-cursor.test.ts (8 tests)
308
+ ✓ tests/e2e-opencode.test.ts (14 tests)
309
+ Tests 157 passed
299
310
  ```
300
311
 
301
312
  To refresh the e2e fixtures (e.g. after changing the indexer or parsers), run:
302
313
  ```bash
303
314
  npm run generate-fixtures
304
315
  ```
305
- This invokes the real `claude` and `opencode` CLIs to generate two-turn sessions with tool use, then commits the results to `tests/fixtures/`.
316
+ This invokes the real `claude` and `opencode` CLIs to generate two-turn sessions with tool use, reads the most recent Cursor session from the live `state.vscdb`, then commits all results to `tests/fixtures/`.
306
317
 
307
318
  ## Uninstall
308
319
 
@@ -310,7 +321,7 @@ This invokes the real `claude` and `opencode` CLIs to generate two-turn sessions
310
321
  npx code-session-memory uninstall
311
322
  ```
312
323
 
313
- This removes the plugin, hooks, skill files, and MCP config entries for both tools. The database is **not** removed automatically.
324
+ This removes the plugin, hooks, skill files, and MCP config entries for all tools (OpenCode, Claude Code, and Cursor). The database is **not** removed automatically.
314
325
 
315
326
  To delete individual sessions instead of wiping everything, use the [session browser](#browsing-sessions):
316
327
  ```bash
@@ -349,10 +360,10 @@ The plugin/hook fires on every agent turn. To avoid re-processing the entire ses
349
360
 
350
361
  1. Reads `last_indexed_message_id` from the `sessions_meta` table
351
362
  2. Skips all messages up to and including that ID
352
- 3. Processes only the new messages
363
+ 3. Processes only the new messages — renders, chunks, and embeds all of them in a **single batched OpenAI API call**
353
364
  4. Updates `last_indexed_message_id` after success
354
365
 
355
- This makes each indexing pass O(new messages) rather than O(all messages).
366
+ This makes each indexing pass O(new messages) rather than O(all messages), and limits network round-trips to one embedding call per turn regardless of message count.
356
367
 
357
368
  ### Why a Node.js subprocess?
358
369
 
@@ -365,6 +376,12 @@ Claude Code writes a JSONL transcript after each session turn. The parser (`tran
365
376
  - Skipping internal `thinking` blocks, metadata entries, and error messages
366
377
  - Converting `tool_use` / `tool_result` entries to readable markdown
367
378
 
379
+ ### Cursor session reading
380
+
381
+ Cursor provides a `transcript_path` field in the stop hook payload — a JSONL file written **synchronously before the hook fires**, so it is always complete and race-condition-free. Each line is `{ "role": "user"|"assistant", "message": { "content": [{ "type": "text", "text": "..." }] } }`. The reader (`cursor-transcript-to-messages.ts`) parses this file directly, strips Cursor's `<user_query>` wrapper tags, and assigns stable `composerId-lineIndex` IDs for incremental indexing.
382
+
383
+ Session metadata (title only) is read best-effort from the SQLite `state.vscdb`. The Cursor `stop` hook fires after each agent turn and requires **Cursor v2.5+**.
384
+
368
385
  ### Chunking strategy
369
386
 
370
387
  - Heading-aware splitting — headings define semantic boundaries
@@ -375,7 +392,7 @@ Claude Code writes a JSONL transcript after each session turn. The parser (`tran
375
392
 
376
393
  ### MCP server
377
394
 
378
- The MCP server uses **stdio transport** — the simplest and most reliable transport for local use. It opens and closes the SQLite connection on each query (no persistent connection), making it safe to run alongside the indexer. The `query_sessions` tool accepts an optional `source` parameter to filter results to a specific tool.
395
+ The MCP server uses **stdio transport** — the simplest and most reliable transport for local use. It opens and closes the SQLite connection on each query (no persistent connection), making it safe to run alongside the indexer. The `query_sessions` tool supports filtering by `source`, `project`, and date range (`fromDate`/`toDate`).
379
396
 
380
397
  ## License
381
398
 
package/dist/mcp/index.js CHANGED
@@ -112,8 +112,10 @@ const server = new mcp_js_1.McpServer({
112
112
  const querySessionsSchema = {
113
113
  queryText: zod_1.z.string().min(1).describe("Natural language description of what you are looking for."),
114
114
  project: zod_1.z.string().optional().describe("Filter results to a specific project directory path (e.g. '/Users/me/myproject'). Optional."),
115
- source: zod_1.z.enum(["opencode", "claude-code"]).optional().describe("Filter results by tool source: 'opencode' or 'claude-code'. Optional — omit to search across both."),
115
+ source: zod_1.z.enum(["opencode", "claude-code", "cursor"]).optional().describe("Filter results by tool source: 'opencode', 'claude-code', or 'cursor'. Optional — omit to search across all."),
116
116
  limit: zod_1.z.number().int().min(1).optional().describe("Maximum number of results to return. Defaults to 5."),
117
+ fromDate: zod_1.z.string().optional().describe("Return only chunks indexed on or after this date. ISO 8601 format, e.g. '2026-02-01' or '2026-02-20T15:00:00Z'. Optional."),
118
+ toDate: zod_1.z.string().optional().describe("Return only chunks indexed on or before this date. ISO 8601 format, e.g. '2026-02-20'. A date-only value is treated as end-of-day UTC. Optional."),
117
119
  };
118
120
  const getSessionChunksSchema = {
119
121
  sessionUrl: zod_1.z.string().min(1).describe("The session message URL from a query_sessions result (e.g. 'session://ses_xxx#msg_yyy')."),
@@ -123,7 +125,26 @@ const getSessionChunksSchema = {
123
125
  // Cast server to any to avoid deep MCP SDK Zod type instantiation (TS2589)
124
126
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
125
127
  const serverAny = server;
126
- serverAny.tool("query_sessions", "Semantically search across all indexed sessions stored in the vector database. Returns the most relevant chunks from past sessions. Sessions from both OpenCode and Claude Code are indexed into the same shared database.", querySessionsSchema, async (args) => querySessionsHandler({ ...args, limit: args.limit ?? 5 }));
128
+ serverAny.tool("query_sessions", "Semantically search across all indexed sessions stored in the vector database. Returns the most relevant chunks from past sessions. Sessions from both OpenCode and Claude Code are indexed into the same shared database.", querySessionsSchema, async (args) => {
129
+ // Parse ISO 8601 date strings into unix milliseconds.
130
+ // For toDate, a date-only string (no time component) is treated as end-of-day UTC
131
+ // by adding 86399999ms (23:59:59.999).
132
+ let fromMs;
133
+ let toMs;
134
+ if (args.fromDate) {
135
+ const t = new Date(args.fromDate).getTime();
136
+ if (!Number.isNaN(t))
137
+ fromMs = t;
138
+ }
139
+ if (args.toDate) {
140
+ const t = new Date(args.toDate).getTime();
141
+ if (!Number.isNaN(t)) {
142
+ // If the value is a date-only string (no 'T' separator), bump to end-of-day
143
+ toMs = args.toDate.includes("T") ? t : t + 86399999;
144
+ }
145
+ }
146
+ return querySessionsHandler({ ...args, limit: args.limit ?? 5, fromMs, toMs });
147
+ });
127
148
  serverAny.tool("get_session_chunks", "Retrieve the ordered content chunks for a specific session message. Use the URL from query_sessions results (e.g. 'session://ses_xxx#msg_yyy') to get the full context around a match.", getSessionChunksSchema, async (args) => getSessionChunksHandler(args));
128
149
  // ---------------------------------------------------------------------------
129
150
  // Start
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../mcp/index.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oEAAoE;AACpE,wEAAiF;AACjF,6BAAwB;AACxB,mCAAgC;AAChC,sDAAwC;AACxC,oEAAsC;AACtC,4CAAoB;AACpB,8CAAgD;AAChD,qCAAoE;AAEpE,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAA,wBAAa,GAAE,CAAC;AAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,wBAAwB,CAAC;AAEzE,IAAI,CAAC,YAAY,EAAE,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,KAAK,CACX,gCAAgC,MAAM,iDAAiD,CACxF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAEpD,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IAChD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACzE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,IAAA,6BAAoB,EAAC;IACpC,MAAM;IACN,SAAS,EAAE,SAAuD;IAClE,8DAA8D;IAC9D,QAAQ,EAAE,wBAA0B;IACpC,EAAE,EAAF,YAAE;CACH,CAAC,CAAC;AAEH,MAAM,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,GAAG,IAAA,2BAAkB,EAAC;IAC3E,eAAe;IACf,aAAa,EAAE,QAAQ,CAAC,aAAa;IACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;CAC5C,CAAC,CAAC;AAEH,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;IAC3B,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,0EAA0E;AAC1E,MAAM,mBAAmB,GAAG;IAC1B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAClG,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;IACtI,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;IACrK,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;CAC1G,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0FAA0F,CAAC;IAClI,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;IACxH,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CACtH,CAAC;AAEF,2EAA2E;AAC3E,8DAA8D;AAC9D,MAAM,SAAS,GAAG,MAAa,CAAC;AAEhC,SAAS,CAAC,IAAI,CACZ,gBAAgB,EAChB,4NAA4N,EAC5N,mBAAmB,EACnB,KAAK,EAAE,IAA8E,EAAE,EAAE,CACvF,oBAAoB,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAC5D,CAAC;AAEF,SAAS,CAAC,IAAI,CACZ,oBAAoB,EACpB,wLAAwL,EACxL,sBAAsB,EACtB,KAAK,EAAE,IAAoE,EAAE,EAAE,CAC7E,uBAAuB,CAAC,IAAI,CAAC,CAChC,CAAC;AAEF,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,+CAA+C,MAAM,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../mcp/index.ts"],"names":[],"mappings":"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"}
@@ -27,12 +27,12 @@ export declare function createSqliteProvider(deps: {
27
27
  Database: new (path: string) => SqliteDatabase;
28
28
  fs: FsModule;
29
29
  }): {
30
- querySessions: (queryEmbedding: number[], topK?: number, projectFilter?: string, sourceFilter?: string) => Promise<QueryResult[]>;
30
+ querySessions: (queryEmbedding: number[], topK?: number, projectFilter?: string, sourceFilter?: string, fromMs?: number, toMs?: number) => Promise<QueryResult[]>;
31
31
  getSessionChunks: (url: string, startIndex?: number, endIndex?: number) => Promise<QueryResult[]>;
32
32
  };
33
33
  export declare function createToolHandlers(deps: {
34
34
  createEmbedding: (text: string) => Promise<number[]>;
35
- querySessions: (embedding: number[], topK: number, project?: string, source?: string) => Promise<QueryResult[]>;
35
+ querySessions: (embedding: number[], topK: number, project?: string, source?: string, fromMs?: number, toMs?: number) => Promise<QueryResult[]>;
36
36
  getSessionChunks: (url: string, startIndex?: number, endIndex?: number) => Promise<QueryResult[]>;
37
37
  }): {
38
38
  querySessionsHandler: (args: {
@@ -40,6 +40,8 @@ export declare function createToolHandlers(deps: {
40
40
  project?: string;
41
41
  source?: string;
42
42
  limit?: number;
43
+ fromMs?: number;
44
+ toMs?: number;
43
45
  }) => Promise<{
44
46
  content: {
45
47
  type: "text";
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,YAAY,EAAE,WAAW,EAAE,CAAC;AAM5B,KAAK,eAAe,GAAG;IAAE,IAAI,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAAA;CAAE,CAAC;AAC9D,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;CAC1C,CAAC;AACF,KAAK,QAAQ,GAAG;IAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,CAAC;AAMvD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;IAC/C,EAAE,EAAE,QAAQ,CAAC;CACd;oCAsBmB,MAAM,EAAE,iCAER,MAAM,iBACP,MAAM,KACpB,OAAO,CAAC,WAAW,EAAE,CAAC;4BA0ClB,MAAM,eACE,MAAM,aACR,MAAM,KAChB,OAAO,CAAC,WAAW,EAAE,CAAC;EAwB1B;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,KACZ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5B,gBAAgB,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC7B;iCAK2C;QACxC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;;;;oCAuD4C;QAC3C,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;EAwDF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,YAAY,EAAE,WAAW,EAAE,CAAC;AAM5B,KAAK,eAAe,GAAG;IAAE,IAAI,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAAA;CAAE,CAAC;AAC9D,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;CAC1C,CAAC;AACF,KAAK,QAAQ,GAAG;IAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,CAAC;AAMvD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;IAC/C,EAAE,EAAE,QAAQ,CAAC;CACd;oCAsBmB,MAAM,EAAE,iCAER,MAAM,iBACP,MAAM,WACZ,MAAM,SACR,MAAM,KACZ,OAAO,CAAC,WAAW,EAAE,CAAC;4BAoDlB,MAAM,eACE,MAAM,aACR,MAAM,KAChB,OAAO,CAAC,WAAW,EAAE,CAAC;EAwB1B;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,KACV,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5B,gBAAgB,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC7B;iCAK2C;QACxC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;;;;;;oCAuD4C;QAC3C,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;EAwDF"}
@@ -32,14 +32,14 @@ function createSqliteProvider(deps) {
32
32
  }
33
33
  }
34
34
  // ---- query_sessions -------------------------------------------------------
35
- async function querySessions(queryEmbedding, topK = 10, projectFilter, sourceFilter) {
35
+ async function querySessions(queryEmbedding, topK = 10, projectFilter, sourceFilter, fromMs, toMs) {
36
36
  return withDb((db) => {
37
37
  let sql = `
38
38
  WITH knn AS (
39
39
  SELECT
40
40
  chunk_id, content, url, section, heading_hierarchy,
41
41
  chunk_index, total_chunks, session_id, session_title, project,
42
- distance
42
+ distance, created_at
43
43
  FROM vec_items
44
44
  WHERE embedding MATCH ?
45
45
  AND k = ?
@@ -58,6 +58,14 @@ function createSqliteProvider(deps) {
58
58
  sql += " AND m.source = ?";
59
59
  params.push(sourceFilter);
60
60
  }
61
+ if (typeof fromMs === "number") {
62
+ sql += " AND knn.created_at >= ?";
63
+ params.push(BigInt(fromMs));
64
+ }
65
+ if (typeof toMs === "number") {
66
+ sql += " AND knn.created_at <= ?";
67
+ params.push(BigInt(toMs));
68
+ }
61
69
  sql += " ORDER BY distance";
62
70
  const rows = db.prepare(sql).all(...params);
63
71
  rows.forEach((r) => {
@@ -100,7 +108,7 @@ function createToolHandlers(deps) {
100
108
  console.error(`[query_sessions] text="${args.queryText}" project="${args.project ?? "any"}" source="${args.source ?? "any"}" limit=${limit}`);
101
109
  try {
102
110
  const embedding = await createEmbedding(args.queryText);
103
- const results = await querySessions(embedding, limit, args.project, args.source);
111
+ const results = await querySessions(embedding, limit, args.project, args.source, args.fromMs, args.toMs);
104
112
  if (results.length === 0) {
105
113
  return {
106
114
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../mcp/server.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,14 @@
2
2
  /**
3
3
  * sessions sub-commands for code-session-memory CLI
4
4
  *
5
- * sessions [list] Browse sessions (interactive TUI)
6
- * sessions list --filter Browse with filter step first
5
+ * sessions [list] Browse sessions (3-level tree: source → date → session)
7
6
  * sessions print [id] Print all chunks of a session to stdout
8
- * sessions print --filter Pick session interactively with filter, then print
9
7
  * sessions delete [id] Delete a session from the DB
10
- * sessions delete --filter Pick session interactively with filter, then delete
8
+ * sessions purge [--days <n>] [--yes] Delete all sessions older than N days
11
9
  */
12
- export declare function cmdSessionsList(args: string[]): Promise<void>;
13
- export declare function cmdSessionsPrint(sessionId?: string, args?: string[]): Promise<void>;
14
- export declare function cmdSessionsDelete(sessionId?: string, args?: string[]): Promise<void>;
10
+ export declare function cmdSessionsList(): Promise<void>;
11
+ export declare function cmdSessionsPrint(sessionId?: string): Promise<void>;
12
+ export declare function cmdSessionsDelete(sessionId?: string): Promise<void>;
13
+ export declare function cmdSessionsPurge(args: string[]): Promise<void>;
15
14
  export declare function cmdSessions(argv: string[]): Promise<void>;
16
15
  //# sourceMappingURL=cli-sessions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-sessions.d.ts","sourceRoot":"","sources":["../../src/cli-sessions.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAkPH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDnE;AAMD,wBAAsB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7F;AAmDD,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD9F;AAwCD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC/D"}
1
+ {"version":3,"file":"cli-sessions.d.ts","sourceRoot":"","sources":["../../src/cli-sessions.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAyRH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBrD;AAqBD,wBAAsB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxE;AAqDD,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDzE;AAMD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFpE;AAoCD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/D"}