mcp-task-server 0.2.6 → 1.0.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.
- package/README.md +140 -61
- package/dist/config.d.ts +22 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +60 -10
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +5 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +28 -10
- package/dist/context.js.map +1 -1
- package/dist/index.js +485 -354
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,26 @@ This script (in `~/scripts/`) bumps version, builds, and publishes to npm. Requi
|
|
|
12
12
|
|
|
13
13
|
## Cursor IDE Integration
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
### Global Config (Recommended)
|
|
16
|
+
|
|
17
|
+
Add to `~/.cursor/mcp.json` for all projects:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"mcpServers": {
|
|
22
|
+
"task-server": {
|
|
23
|
+
"command": "npx",
|
|
24
|
+
"args": ["-y", "mcp-task-server"]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The server auto-detects your workspace. No per-project config needed.
|
|
31
|
+
|
|
32
|
+
### Per-Project Config (Optional)
|
|
33
|
+
|
|
34
|
+
For explicit control, add to `.cursor/mcp.json` in your project:
|
|
16
35
|
|
|
17
36
|
```json
|
|
18
37
|
{
|
|
@@ -28,8 +47,6 @@ Add to your project's `.cursor/mcp.json`:
|
|
|
28
47
|
}
|
|
29
48
|
```
|
|
30
49
|
|
|
31
|
-
**Important**: Use `TASK_WORKSPACE` to set your project path. This is more reliable than `cwd`. See [Workspace Configuration](#workspace-path-configuration) for details.
|
|
32
|
-
|
|
33
50
|
After adding, reload Cursor: `Cmd+Shift+P` → "Developer: Reload Window"
|
|
34
51
|
|
|
35
52
|
---
|
|
@@ -41,7 +58,7 @@ flowchart TB
|
|
|
41
58
|
end
|
|
42
59
|
|
|
43
60
|
subgraph MCP Task Server
|
|
44
|
-
B[
|
|
61
|
+
B[27 Tools]
|
|
45
62
|
C[Preferences Engine]
|
|
46
63
|
end
|
|
47
64
|
|
|
@@ -61,7 +78,8 @@ flowchart TB
|
|
|
61
78
|
|
|
62
79
|
## Features
|
|
63
80
|
|
|
64
|
-
- **
|
|
81
|
+
- **27 MCP Tools**: Comprehensive task management and coordination
|
|
82
|
+
- **Auto Workspace Detection**: Works globally without per-project config
|
|
65
83
|
- **Multi-Agent Coordination**: Support for Planner, Worker, and Judge roles
|
|
66
84
|
- **Dependency Tracking**: Tasks can depend on other tasks
|
|
67
85
|
- **Priority Levels**: Critical, High, Medium, Low
|
|
@@ -122,30 +140,73 @@ flowchart TB
|
|
|
122
140
|
|
|
123
141
|
### Syncing Cursor Memories
|
|
124
142
|
|
|
125
|
-
The `sync` action
|
|
143
|
+
The `sync` action transfers memories from Cursor to shared context, preserving IDs:
|
|
126
144
|
|
|
127
145
|
```mermaid
|
|
128
146
|
flowchart TD
|
|
129
|
-
A[Agent sees Cursor memory] --> B["update_memory(action: sync)"]
|
|
130
|
-
B --> C{
|
|
147
|
+
A["Agent sees Cursor memory (ID: 13502615)"] --> B["update_memory(action: sync, id: 13502615)"]
|
|
148
|
+
B --> C{ID or title exists?}
|
|
131
149
|
C -->|Yes| D[Update existing memory]
|
|
132
|
-
C -->|No| E[Create
|
|
150
|
+
C -->|No| E[Create with Cursor ID]
|
|
133
151
|
D --> F[Save to shared-context.json]
|
|
134
152
|
E --> F
|
|
135
153
|
```
|
|
136
154
|
|
|
137
|
-
|
|
155
|
+
Always include the Cursor memory ID to keep IDs consistent:
|
|
138
156
|
|
|
139
157
|
```typescript
|
|
140
|
-
// Sync
|
|
158
|
+
// Sync with Cursor ID (recommended)
|
|
141
159
|
update_memory({
|
|
142
|
-
action: "sync",
|
|
160
|
+
action: "sync",
|
|
161
|
+
id: "13502615", // Cursor's memory ID
|
|
143
162
|
title: "Writing preferences",
|
|
144
163
|
content: "British English, ISO dates, no emojis..."
|
|
145
164
|
})
|
|
146
|
-
// Returns: { status: "synced_existing"
|
|
165
|
+
// Returns: { status: "synced_existing", memory: { id: "13502615", ... } }
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Why Shared Context Exists
|
|
169
|
+
|
|
170
|
+
Cursor's memory system has limitations that make shared context necessary:
|
|
171
|
+
|
|
172
|
+
```mermaid
|
|
173
|
+
flowchart TB
|
|
174
|
+
subgraph cursor [Cursor IDE]
|
|
175
|
+
A[AI Assistant]
|
|
176
|
+
B[Internal Memory DB]
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
subgraph mcp [MCP Server]
|
|
180
|
+
C[Task Tools]
|
|
181
|
+
D[Memory Tools]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
subgraph problem [The Problem]
|
|
185
|
+
E["AI can READ Cursor memories"]
|
|
186
|
+
F["MCP cannot ACCESS Cursor memories"]
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
A -->|can see| B
|
|
190
|
+
A -->|can call| C
|
|
191
|
+
C -.-x|no access| B
|
|
192
|
+
|
|
193
|
+
E --> G[Need bridge]
|
|
194
|
+
F --> G
|
|
147
195
|
```
|
|
148
196
|
|
|
197
|
+
| Cursor Memory Limitation | Impact | Solution |
|
|
198
|
+
|-------------------------|--------|----------|
|
|
199
|
+
| No API access | MCP tools can't read Cursor's memory database | `~/.cursor/shared-context.json` as shared store |
|
|
200
|
+
| Isolated per conversation | Memories don't persist across all contexts | Shared file accessible to all MCP servers |
|
|
201
|
+
| No programmatic sync | Can't auto-export memories | `update_memory` sync action with Cursor ID |
|
|
202
|
+
| Different ID systems | Cursor IDs vs generated IDs cause duplicates | Pass Cursor ID to sync to preserve consistency |
|
|
203
|
+
|
|
204
|
+
**Workflow:**
|
|
205
|
+
1. Cursor creates a memory (you see it in chat with ID like `13502615`)
|
|
206
|
+
2. Ask agent to sync it: `update_memory({ action: "sync", id: "13502615", title: "...", content: "..." })`
|
|
207
|
+
3. Memory saved to `~/.cursor/shared-context.json` with same ID
|
|
208
|
+
4. All MCP servers can now read it
|
|
209
|
+
|
|
149
210
|
### Where Preferences Are Used
|
|
150
211
|
|
|
151
212
|
| Tool Type | How Preferences Are Applied |
|
|
@@ -198,29 +259,46 @@ npm start
|
|
|
198
259
|
|
|
199
260
|
## Workspace Path Configuration
|
|
200
261
|
|
|
201
|
-
The server
|
|
262
|
+
The server automatically detects your project's root directory using multiple strategies.
|
|
202
263
|
|
|
203
|
-
|
|
264
|
+
### Detection Order
|
|
204
265
|
|
|
205
|
-
|
|
266
|
+
```mermaid
|
|
267
|
+
flowchart TD
|
|
268
|
+
A[Start] --> B{TASK_WORKSPACE set?}
|
|
269
|
+
B -->|Yes| C[Use TASK_WORKSPACE]
|
|
270
|
+
B -->|No| D{WORKSPACE_FOLDER_PATHS set?}
|
|
271
|
+
D -->|Yes| E[Use Cursor workspace path]
|
|
272
|
+
D -->|No| F{Project markers found?}
|
|
273
|
+
F -->|Yes| G["Use directory with .git, package.json, or memory_bank"]
|
|
274
|
+
F -->|No| H[Fall back to cwd]
|
|
275
|
+
```
|
|
206
276
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
277
|
+
| Priority | Method | When Used |
|
|
278
|
+
|----------|--------|-----------|
|
|
279
|
+
| 1 | `TASK_WORKSPACE` env | Explicit per-project override |
|
|
280
|
+
| 2 | `WORKSPACE_FOLDER_PATHS` env | Auto-set by Cursor (undocumented) |
|
|
281
|
+
| 3 | Project marker detection | Walks up from cwd looking for `.git`, `package.json`, `memory_bank` |
|
|
282
|
+
| 4 | `process.cwd()` | Final fallback |
|
|
283
|
+
|
|
284
|
+
### Debugging
|
|
285
|
+
|
|
286
|
+
Run `get_version` to see how the workspace was detected:
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
get_version()
|
|
290
|
+
// Returns: { workspace: { root: "/path/to/project", source: "found .git" } }
|
|
219
291
|
```
|
|
220
292
|
|
|
221
|
-
|
|
293
|
+
Possible sources:
|
|
294
|
+
- `"TASK_WORKSPACE env"` - Explicit override
|
|
295
|
+
- `"WORKSPACE_FOLDER_PATHS env"` - Detected from Cursor
|
|
296
|
+
- `"found .git"` / `"found package.json"` / `"found memory_bank"` - Project marker
|
|
297
|
+
- `"process.cwd() fallback"` - No detection, using current directory
|
|
222
298
|
|
|
223
|
-
|
|
299
|
+
### Explicit Override
|
|
300
|
+
|
|
301
|
+
If auto-detection isn't working, set `TASK_WORKSPACE` in per-project config:
|
|
224
302
|
|
|
225
303
|
```json
|
|
226
304
|
{
|
|
@@ -228,28 +306,14 @@ The `cwd` parameter sets the working directory, but has limitations in Cursor:
|
|
|
228
306
|
"task-server": {
|
|
229
307
|
"command": "npx",
|
|
230
308
|
"args": ["-y", "mcp-task-server"],
|
|
231
|
-
"
|
|
309
|
+
"env": {
|
|
310
|
+
"TASK_WORKSPACE": "/absolute/path/to/project"
|
|
311
|
+
}
|
|
232
312
|
}
|
|
233
313
|
}
|
|
234
314
|
}
|
|
235
315
|
```
|
|
236
316
|
|
|
237
|
-
**cwd Limitations:**
|
|
238
|
-
- Must be an absolute path (no `~` expansion)
|
|
239
|
-
- May not work reliably with npx in all cases
|
|
240
|
-
- Each project needs its own `.cursor/mcp.json`
|
|
241
|
-
|
|
242
|
-
**Debugging workspace issues:**
|
|
243
|
-
|
|
244
|
-
Run `get_version` to see where the server thinks the workspace is:
|
|
245
|
-
|
|
246
|
-
```typescript
|
|
247
|
-
get_version()
|
|
248
|
-
// Returns: { workspace: { root: "/path/to/project", source: "TASK_WORKSPACE env" } }
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
If files are being created in the wrong location (e.g., home directory), add `TASK_WORKSPACE` to your MCP config.
|
|
252
|
-
|
|
253
317
|
## Configuration
|
|
254
318
|
|
|
255
319
|
Configure via environment variables:
|
|
@@ -385,14 +449,28 @@ init_project({ force: true })
|
|
|
385
449
|
|
|
386
450
|
| Tool | Description |
|
|
387
451
|
|------|-------------|
|
|
388
|
-
| `
|
|
452
|
+
| `help` | List all available tools with descriptions and parameters |
|
|
453
|
+
| `get_version` | Get server version and workspace detection info |
|
|
454
|
+
| `diagnose` | Diagnose MCP configuration, paths, and workspace detection |
|
|
389
455
|
| `show_memory` | Show shared context memories from `~/.cursor/shared-context.json` |
|
|
390
|
-
| `update_memory` | Create, update, sync, or delete memories
|
|
456
|
+
| `update_memory` | Create, update, sync, or delete memories (sync preserves Cursor IDs) |
|
|
391
457
|
|
|
392
458
|
```typescript
|
|
393
|
-
//
|
|
459
|
+
// List all tools
|
|
460
|
+
help()
|
|
461
|
+
// Returns: { server, version, tool_count: 27, tools: [...] }
|
|
462
|
+
|
|
463
|
+
// Get help for specific tool
|
|
464
|
+
help({ tool: "update_memory" })
|
|
465
|
+
// Returns: { name, description, parameters: { action: {...}, id: {...}, ... } }
|
|
466
|
+
|
|
467
|
+
// Check version and workspace
|
|
394
468
|
get_version()
|
|
395
|
-
// Returns: {
|
|
469
|
+
// Returns: { version: "x.x.x", workspace: { root: "/path", source: "found .git" } }
|
|
470
|
+
|
|
471
|
+
// Diagnose configuration
|
|
472
|
+
diagnose() // Basic info
|
|
473
|
+
diagnose({ verbose: true }) // Include env vars and file checks
|
|
396
474
|
|
|
397
475
|
// Show all memories
|
|
398
476
|
show_memory()
|
|
@@ -403,30 +481,31 @@ show_memory({ search: "writing" })
|
|
|
403
481
|
// Force reload from file (clears cache)
|
|
404
482
|
show_memory({ reload: true })
|
|
405
483
|
|
|
406
|
-
//
|
|
484
|
+
// Sync a Cursor memory (preserves Cursor ID)
|
|
407
485
|
update_memory({
|
|
408
|
-
action: "
|
|
409
|
-
|
|
410
|
-
|
|
486
|
+
action: "sync",
|
|
487
|
+
id: "13502615", // Cursor's memory ID
|
|
488
|
+
title: "Writing preferences",
|
|
489
|
+
content: "British English, ISO dates, no emojis..."
|
|
411
490
|
})
|
|
412
491
|
|
|
413
|
-
//
|
|
492
|
+
// Create a new memory (generates ID)
|
|
414
493
|
update_memory({
|
|
415
|
-
action: "
|
|
416
|
-
title: "
|
|
417
|
-
content: "
|
|
494
|
+
action: "create",
|
|
495
|
+
title: "Project conventions",
|
|
496
|
+
content: "Use TypeScript strict mode."
|
|
418
497
|
})
|
|
419
498
|
|
|
420
499
|
// Update an existing memory by ID
|
|
421
500
|
update_memory({
|
|
422
501
|
action: "update",
|
|
423
|
-
id: "
|
|
502
|
+
id: "13502615",
|
|
424
503
|
title: "Writing preferences",
|
|
425
504
|
content: "Updated content..."
|
|
426
505
|
})
|
|
427
506
|
|
|
428
507
|
// Delete a memory
|
|
429
|
-
update_memory({ action: "delete", id: "
|
|
508
|
+
update_memory({ action: "delete", id: "13502615" })
|
|
430
509
|
|
|
431
510
|
// Analyse project and get suggestions for memory_bank
|
|
432
511
|
analyse_project()
|
package/dist/config.d.ts
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
import { Config } from "./types.js";
|
|
2
|
+
export interface WorkspaceDetection {
|
|
3
|
+
root: string;
|
|
4
|
+
source: string;
|
|
5
|
+
}
|
|
2
6
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Workspace resolution order:
|
|
6
|
-
* 1. TASK_WORKSPACE environment variable (explicit override)
|
|
7
|
-
* 2. process.cwd() (current working directory from MCP cwd setting)
|
|
7
|
+
* Detect the workspace root using multiple strategies
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Detection priority:
|
|
10
|
+
* 1. TASK_WORKSPACE - Explicit override (for per-project config)
|
|
11
|
+
* 2. WORKSPACE_FOLDER_PATHS - Cursor's env var (colon-separated list)
|
|
12
|
+
* 3. Project marker detection - Walk up from cwd looking for .git, package.json, or memory_bank
|
|
13
|
+
* 4. process.cwd() - Final fallback
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectWorkspaceRoot(): WorkspaceDetection;
|
|
16
|
+
/**
|
|
17
|
+
* Get the detected workspace (cached)
|
|
18
|
+
*/
|
|
19
|
+
export declare function getWorkspace(): WorkspaceDetection;
|
|
20
|
+
/**
|
|
21
|
+
* Clear the workspace cache (useful for testing)
|
|
22
|
+
*/
|
|
23
|
+
export declare function clearWorkspaceCache(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get configuration from environment variables with sensible defaults
|
|
11
26
|
*/
|
|
12
27
|
export declare function getConfig(): Config;
|
|
13
28
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,kBAAkB,CA8BxD;AAKD;;GAEG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,CAKjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAmBlC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGtE"}
|
package/dist/config.js
CHANGED
|
@@ -1,26 +1,76 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { dirname, join } from "path";
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Workspace resolution order:
|
|
5
|
-
* 1. TASK_WORKSPACE environment variable (explicit override)
|
|
6
|
-
* 2. process.cwd() (current working directory from MCP cwd setting)
|
|
4
|
+
* Detect the workspace root using multiple strategies
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* Detection priority:
|
|
7
|
+
* 1. TASK_WORKSPACE - Explicit override (for per-project config)
|
|
8
|
+
* 2. WORKSPACE_FOLDER_PATHS - Cursor's env var (colon-separated list)
|
|
9
|
+
* 3. Project marker detection - Walk up from cwd looking for .git, package.json, or memory_bank
|
|
10
|
+
* 4. process.cwd() - Final fallback
|
|
11
|
+
*/
|
|
12
|
+
export function detectWorkspaceRoot() {
|
|
13
|
+
// 1. Explicit override
|
|
14
|
+
if (process.env.TASK_WORKSPACE) {
|
|
15
|
+
return { root: process.env.TASK_WORKSPACE, source: "TASK_WORKSPACE env" };
|
|
16
|
+
}
|
|
17
|
+
// 2. Cursor's workspace paths (undocumented but reported to work)
|
|
18
|
+
if (process.env.WORKSPACE_FOLDER_PATHS) {
|
|
19
|
+
const paths = process.env.WORKSPACE_FOLDER_PATHS.split(":");
|
|
20
|
+
if (paths[0]) {
|
|
21
|
+
return { root: paths[0], source: "WORKSPACE_FOLDER_PATHS env" };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// 3. Walk up from cwd looking for project markers
|
|
25
|
+
const markers = [".git", "package.json", "memory_bank"];
|
|
26
|
+
let dir = process.cwd();
|
|
27
|
+
const root = "/";
|
|
28
|
+
while (dir !== root && dir !== dirname(dir)) {
|
|
29
|
+
for (const marker of markers) {
|
|
30
|
+
if (existsSync(join(dir, marker))) {
|
|
31
|
+
return { root: dir, source: `found ${marker}` };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
dir = dirname(dir);
|
|
35
|
+
}
|
|
36
|
+
// 4. Fallback
|
|
37
|
+
return { root: process.cwd(), source: "process.cwd() fallback" };
|
|
38
|
+
}
|
|
39
|
+
// Cache the workspace detection result
|
|
40
|
+
let cachedWorkspace = null;
|
|
41
|
+
/**
|
|
42
|
+
* Get the detected workspace (cached)
|
|
43
|
+
*/
|
|
44
|
+
export function getWorkspace() {
|
|
45
|
+
if (!cachedWorkspace) {
|
|
46
|
+
cachedWorkspace = detectWorkspaceRoot();
|
|
47
|
+
}
|
|
48
|
+
return cachedWorkspace;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Clear the workspace cache (useful for testing)
|
|
52
|
+
*/
|
|
53
|
+
export function clearWorkspaceCache() {
|
|
54
|
+
cachedWorkspace = null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get configuration from environment variables with sensible defaults
|
|
10
58
|
*/
|
|
11
59
|
export function getConfig() {
|
|
12
|
-
const
|
|
60
|
+
const workspace = getWorkspace();
|
|
13
61
|
// Debug: log where we think the workspace is
|
|
14
62
|
if (process.env.DEBUG_TASK_SERVER) {
|
|
15
|
-
console.error(`[mcp-task-server] Workspace root: ${
|
|
63
|
+
console.error(`[mcp-task-server] Workspace root: ${workspace.root}`);
|
|
64
|
+
console.error(`[mcp-task-server] Detection source: ${workspace.source}`);
|
|
16
65
|
console.error(`[mcp-task-server] TASK_WORKSPACE: ${process.env.TASK_WORKSPACE || '(not set)'}`);
|
|
66
|
+
console.error(`[mcp-task-server] WORKSPACE_FOLDER_PATHS: ${process.env.WORKSPACE_FOLDER_PATHS || '(not set)'}`);
|
|
17
67
|
console.error(`[mcp-task-server] process.cwd(): ${process.cwd()}`);
|
|
18
68
|
}
|
|
19
69
|
return {
|
|
20
70
|
markdownPath: process.env.TASK_MD_PATH || "memory_bank/execution/progress.md",
|
|
21
71
|
jsonPath: process.env.TASK_JSON_PATH || "memory_bank/tasks/tasks.json",
|
|
22
72
|
tasksDir: process.env.TASK_DIR || "memory_bank/tasks",
|
|
23
|
-
workspaceRoot,
|
|
73
|
+
workspaceRoot: workspace.root,
|
|
24
74
|
};
|
|
25
75
|
}
|
|
26
76
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQrC;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,uBAAuB;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC5E,CAAC;IAED,kEAAkE;IAClE,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,GAAG,CAAC;IAEjB,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QACD,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,cAAc;IACd,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;AACnE,CAAC;AAED,uCAAuC;AACvC,IAAI,eAAe,GAA8B,IAAI,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,6CAA6C;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,qCAAqC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,uCAAuC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC,CAAC;QAChG,OAAO,CAAC,KAAK,CAAC,6CAA6C,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,WAAW,EAAE,CAAC,CAAC;QAChH,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,YAAY,EACV,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,mCAAmC;QACjE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,8BAA8B;QACtE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,mBAAmB;QACrD,aAAa,EAAE,SAAS,CAAC,IAAI;KAC9B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,YAAoB;IAC9D,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,aAAa,IAAI,YAAY,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,WAAW,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,SAAS,QAAQ,MAAM,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/context.d.ts
CHANGED
|
@@ -46,8 +46,12 @@ export declare function upsertMemory(memory: CursorMemory): SharedContext;
|
|
|
46
46
|
/**
|
|
47
47
|
* Add or update a memory by title (case-insensitive match)
|
|
48
48
|
* If a memory with the same title exists, updates it. Otherwise creates new.
|
|
49
|
+
*
|
|
50
|
+
* @param title - Memory title
|
|
51
|
+
* @param content - Memory content
|
|
52
|
+
* @param cursorId - Optional Cursor memory ID to use (preserves original ID from Cursor)
|
|
49
53
|
*/
|
|
50
|
-
export declare function upsertMemoryByTitle(title: string, content: string): {
|
|
54
|
+
export declare function upsertMemoryByTitle(title: string, content: string, cursorId?: string): {
|
|
51
55
|
memory: CursorMemory;
|
|
52
56
|
wasUpdated: boolean;
|
|
53
57
|
};
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAgBxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAGrD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAW9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAiBhE;AAED
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAgBxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAGrD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAW9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAiBhE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAoC/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE,CAgB5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
package/dist/context.js
CHANGED
|
@@ -101,20 +101,38 @@ export function upsertMemory(memory) {
|
|
|
101
101
|
/**
|
|
102
102
|
* Add or update a memory by title (case-insensitive match)
|
|
103
103
|
* If a memory with the same title exists, updates it. Otherwise creates new.
|
|
104
|
+
*
|
|
105
|
+
* @param title - Memory title
|
|
106
|
+
* @param content - Memory content
|
|
107
|
+
* @param cursorId - Optional Cursor memory ID to use (preserves original ID from Cursor)
|
|
104
108
|
*/
|
|
105
|
-
export function upsertMemoryByTitle(title, content) {
|
|
109
|
+
export function upsertMemoryByTitle(title, content, cursorId) {
|
|
106
110
|
let ctx = loadSharedContext() || { cursor_memories: [] };
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
// First check if we have a memory with this exact Cursor ID
|
|
112
|
+
if (cursorId) {
|
|
113
|
+
const existingByIdIndex = ctx.cursor_memories.findIndex((m) => m.id === cursorId);
|
|
114
|
+
if (existingByIdIndex >= 0) {
|
|
115
|
+
// Update existing by ID - also update title in case it changed
|
|
116
|
+
ctx.cursor_memories[existingByIdIndex].content = content;
|
|
117
|
+
ctx.cursor_memories[existingByIdIndex].title = title;
|
|
118
|
+
saveSharedContext(ctx);
|
|
119
|
+
return { memory: ctx.cursor_memories[existingByIdIndex], wasUpdated: true };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Fall back to case-insensitive title match
|
|
123
|
+
const existingByTitleIndex = ctx.cursor_memories.findIndex((m) => m.title.toLowerCase() === title.toLowerCase());
|
|
124
|
+
if (existingByTitleIndex >= 0) {
|
|
125
|
+
// Update existing - use provided cursorId if available, otherwise keep existing ID
|
|
126
|
+
if (cursorId) {
|
|
127
|
+
ctx.cursor_memories[existingByTitleIndex].id = cursorId;
|
|
128
|
+
}
|
|
129
|
+
ctx.cursor_memories[existingByTitleIndex].content = content;
|
|
130
|
+
ctx.cursor_memories[existingByTitleIndex].title = title;
|
|
113
131
|
saveSharedContext(ctx);
|
|
114
|
-
return { memory: ctx.cursor_memories[
|
|
132
|
+
return { memory: ctx.cursor_memories[existingByTitleIndex], wasUpdated: true };
|
|
115
133
|
}
|
|
116
|
-
// Create new
|
|
117
|
-
const memory = { id: generateMemoryId(), title, content };
|
|
134
|
+
// Create new - use cursorId if provided, otherwise generate
|
|
135
|
+
const memory = { id: cursorId || generateMemoryId(), title, content };
|
|
118
136
|
ctx.cursor_memories.push(memory);
|
|
119
137
|
saveSharedContext(ctx);
|
|
120
138
|
return { memory, wasUpdated: false };
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|