mcp-context-sync 1.0.4 → 1.0.6
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 +82 -26
- package/dist/cli.js +56 -12
- package/dist/cli.js.map +1 -1
- package/dist/db/queries.d.ts +2 -0
- package/dist/db/queries.js +4 -0
- package/dist/db/queries.js.map +1 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/prompts/auto-resume.d.ts +0 -3
- package/dist/prompts/auto-resume.js +0 -70
- package/dist/prompts/auto-resume.js.map +0 -1
- package/dist/prompts/resume-work.d.ts +0 -2
- package/dist/prompts/resume-work.js +0 -29
- package/dist/prompts/resume-work.js.map +0 -1
- package/dist/prompts/sync-session.d.ts +0 -2
- package/dist/prompts/sync-session.js +0 -33
- package/dist/prompts/sync-session.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# context-sync
|
|
1
|
+
# mcp-context-sync
|
|
2
2
|
|
|
3
3
|
MCP server that synchronizes work context between AI coding agents. Switch seamlessly between Claude Code, Codex, Gemini CLI, Cursor, and others without losing context.
|
|
4
4
|
|
|
@@ -14,33 +14,58 @@ Claude Code ──sync──▶ SQLite ◀──resume── Codex
|
|
|
14
14
|
|
|
15
15
|
## Installation
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Install globally from npm:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
21
|
-
npm install
|
|
22
|
-
npm run build
|
|
20
|
+
npm i -g mcp-context-sync
|
|
23
21
|
```
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
This provides two binaries:
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
| Binary | Purpose |
|
|
26
|
+
|--------|---------|
|
|
27
|
+
| `mcp-context-sync` | MCP server (stdio transport) |
|
|
28
|
+
| `context-sync` | CLI for agents that run shell commands |
|
|
29
|
+
|
|
30
|
+
> **Note:** Use global install, not `npx`. Running via `npx` causes timeout issues with MCP health checks.
|
|
31
|
+
|
|
32
|
+
## MCP configuration
|
|
33
|
+
|
|
34
|
+
### Claude Code
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
claude mcp add --scope user context-sync -- mcp-context-sync
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Codex
|
|
41
|
+
|
|
42
|
+
Add to `~/.codex/mcp.json`:
|
|
28
43
|
|
|
29
44
|
```json
|
|
30
45
|
{
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
46
|
+
"mcpServers": {
|
|
47
|
+
"context-sync": {
|
|
48
|
+
"command": "mcp-context-sync"
|
|
49
|
+
}
|
|
34
50
|
}
|
|
35
51
|
}
|
|
36
52
|
```
|
|
37
53
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- **Gemini CLI:** `~/.gemini/antigravity/mcp_config.json`
|
|
54
|
+
### Gemini CLI
|
|
55
|
+
|
|
56
|
+
Add to your `mcp_config.json`:
|
|
42
57
|
|
|
43
|
-
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"context-sync": {
|
|
62
|
+
"command": "mcp-context-sync"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## MCP tools
|
|
44
69
|
|
|
45
70
|
| Tool | Description |
|
|
46
71
|
|------|-------------|
|
|
@@ -52,26 +77,57 @@ Config file locations:
|
|
|
52
77
|
| `search-snapshots` | Full-text search across snapshots |
|
|
53
78
|
| `amend-snapshot` | Update the most recent snapshot |
|
|
54
79
|
|
|
55
|
-
##
|
|
80
|
+
## MCP resources
|
|
81
|
+
|
|
82
|
+
| Resource | Description |
|
|
83
|
+
|----------|-------------|
|
|
84
|
+
| `status` | Server status and stats |
|
|
85
|
+
| `project-snapshot` | Latest snapshot for a project |
|
|
86
|
+
| `project-decisions` | Decision log for a project |
|
|
87
|
+
|
|
88
|
+
## CLI
|
|
89
|
+
|
|
90
|
+
Fallback for agents that run shell commands instead of calling MCP tools directly.
|
|
56
91
|
|
|
57
|
-
|
|
92
|
+
```
|
|
93
|
+
context-sync resume [--project <path>] [--agent <name>] [--peek]
|
|
94
|
+
context-sync sync --file <path> | --json '<json>' | stdin
|
|
95
|
+
context-sync list
|
|
96
|
+
context-sync history [--project <path>] [--limit <n>]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
If `--project` is omitted, the current working directory is used automatically.
|
|
100
|
+
|
|
101
|
+
### Flags
|
|
102
|
+
|
|
103
|
+
| Flag | Commands | Description |
|
|
104
|
+
|------|----------|-------------|
|
|
105
|
+
| `--project <path>` | resume, history | Project directory (defaults to cwd) |
|
|
106
|
+
| `--agent <name>` | resume | Agent name for handoff tracking (defaults to `codex`) |
|
|
107
|
+
| `--peek` | resume | Read-only mode — prints snapshot without recording a handoff |
|
|
108
|
+
| `--file <path>` | sync | Read JSON input from a file (recommended for PowerShell) |
|
|
109
|
+
| `--json '<json>'` | sync | Inline JSON input |
|
|
110
|
+
| `--limit <n>` | history | Max entries to show (default 10) |
|
|
111
|
+
|
|
112
|
+
### Examples
|
|
58
113
|
|
|
59
114
|
```bash
|
|
60
|
-
# Resume latest snapshot
|
|
61
|
-
context-sync resume --
|
|
115
|
+
# Resume latest snapshot (cwd auto-detected)
|
|
116
|
+
context-sync resume --agent codex
|
|
117
|
+
|
|
118
|
+
# Peek at snapshot without recording a handoff
|
|
119
|
+
context-sync resume --peek
|
|
62
120
|
|
|
63
|
-
# Save a snapshot
|
|
64
|
-
context-sync sync --json
|
|
121
|
+
# Save a snapshot from a JSON file
|
|
122
|
+
context-sync sync --file snapshot.json
|
|
65
123
|
|
|
66
|
-
# List all projects
|
|
124
|
+
# List all synced projects
|
|
67
125
|
context-sync list
|
|
68
126
|
|
|
69
|
-
# View
|
|
70
|
-
context-sync history --
|
|
127
|
+
# View last 5 handoffs
|
|
128
|
+
context-sync history --limit 5
|
|
71
129
|
```
|
|
72
130
|
|
|
73
|
-
After `npm run build`, the CLI is available at `dist/cli.js` or via `npx context-sync` if installed globally.
|
|
74
|
-
|
|
75
131
|
## Storage
|
|
76
132
|
|
|
77
133
|
SQLite database at `~/.agents/context-sync/data/context-sync.sqlite`. Created automatically on first use. WAL mode enabled for concurrent access.
|
package/dist/cli.js
CHANGED
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
* context-sync history [--project <path>] [--limit <n>]
|
|
11
11
|
*/
|
|
12
12
|
import { readFileSync } from 'node:fs';
|
|
13
|
+
import { dirname } from 'node:path';
|
|
13
14
|
import { getDatabase, closeDatabase } from './db/connection.js';
|
|
14
15
|
import { upsertProject, getProject, getNextSequenceNumber, insertSnapshot, insertDecision, insertHandoff, updateProjectSyncStats, getLatestSnapshot, getProjectAgents, listProjects, getHandoffsByProject, } from './db/queries.js';
|
|
15
16
|
import { projectIdFromPath, normalizePath, displayNameFromPath, } from './lib/project-id.js';
|
|
16
17
|
import { generateId } from './lib/uuid.js';
|
|
17
18
|
import { renderSnapshotMarkdown } from './lib/snapshot-renderer.js';
|
|
19
|
+
import { SyncInputSchema } from './lib/types.js';
|
|
18
20
|
// ---------------------------------------------------------------------------
|
|
19
21
|
// Arg helpers
|
|
20
22
|
// ---------------------------------------------------------------------------
|
|
@@ -46,13 +48,49 @@ function readJsonInput() {
|
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
// ---------------------------------------------------------------------------
|
|
51
|
+
// Project root discovery — walk up from cwd to find a known project
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
/**
|
|
54
|
+
* Starting from `startDir`, walk up the directory tree and return the first
|
|
55
|
+
* directory whose normalized path matches a project already stored in the DB.
|
|
56
|
+
* Returns the matched normalized path, or null if none found.
|
|
57
|
+
*/
|
|
58
|
+
function resolveProjectDir(db, startDir) {
|
|
59
|
+
const projects = listProjects(db);
|
|
60
|
+
if (projects.length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
const knownPaths = new Set(projects.map((p) => p.normalized_path));
|
|
63
|
+
let current = normalizePath(startDir);
|
|
64
|
+
// eslint-disable-next-line no-constant-condition
|
|
65
|
+
while (true) {
|
|
66
|
+
if (knownPaths.has(current))
|
|
67
|
+
return current;
|
|
68
|
+
const parent = normalizePath(dirname(current));
|
|
69
|
+
if (parent === current)
|
|
70
|
+
break; // reached filesystem root
|
|
71
|
+
current = parent;
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolve the effective project directory for CLI commands.
|
|
77
|
+
* If --project is given, use it directly. Otherwise walk up from cwd.
|
|
78
|
+
*/
|
|
79
|
+
function getEffectiveProjectDir(db) {
|
|
80
|
+
const explicit = getFlag('project');
|
|
81
|
+
if (explicit)
|
|
82
|
+
return explicit;
|
|
83
|
+
const resolved = resolveProjectDir(db, process.cwd());
|
|
84
|
+
return resolved ?? process.cwd();
|
|
85
|
+
}
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
49
87
|
// resume
|
|
50
88
|
// ---------------------------------------------------------------------------
|
|
51
89
|
function cmdResume() {
|
|
52
|
-
const projectDir = getFlag('project') ?? process.cwd();
|
|
53
90
|
const agent = getFlag('agent') ?? 'codex';
|
|
54
91
|
const peek = argv.includes('--peek');
|
|
55
92
|
const db = getDatabase();
|
|
93
|
+
const projectDir = getEffectiveProjectDir(db);
|
|
56
94
|
const projectId = projectIdFromPath(projectDir);
|
|
57
95
|
const displayName = displayNameFromPath(projectDir);
|
|
58
96
|
const project = getProject(db, projectId);
|
|
@@ -111,20 +149,26 @@ function cmdSync() {
|
|
|
111
149
|
console.error(' or: <json> | context-sync sync');
|
|
112
150
|
process.exit(1);
|
|
113
151
|
}
|
|
114
|
-
let
|
|
152
|
+
let parsed;
|
|
115
153
|
try {
|
|
116
|
-
|
|
154
|
+
parsed = JSON.parse(raw);
|
|
117
155
|
}
|
|
118
156
|
catch {
|
|
119
157
|
console.error('Error: invalid JSON input');
|
|
120
158
|
process.exit(1);
|
|
121
159
|
}
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
160
|
+
const result = SyncInputSchema.safeParse(parsed);
|
|
161
|
+
if (!result.success) {
|
|
162
|
+
console.error('Error: invalid sync input');
|
|
163
|
+
for (const issue of result.error.issues) {
|
|
164
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
|
|
165
|
+
console.error(` ${path}: ${issue.message}`);
|
|
166
|
+
}
|
|
126
167
|
process.exit(1);
|
|
127
168
|
}
|
|
169
|
+
const input = result.data;
|
|
170
|
+
const projectDir = input.projectDir;
|
|
171
|
+
const agent = input.agent;
|
|
128
172
|
const db = getDatabase();
|
|
129
173
|
const projectId = projectIdFromPath(projectDir);
|
|
130
174
|
const normalized = normalizePath(projectDir);
|
|
@@ -140,13 +184,13 @@ function cmdSync() {
|
|
|
140
184
|
project_id: projectId,
|
|
141
185
|
sequence_number: seqNum,
|
|
142
186
|
agent,
|
|
143
|
-
summary: input.summary
|
|
144
|
-
tasks_completed: JSON.stringify(input.tasksCompleted
|
|
145
|
-
tasks_remaining: JSON.stringify(input.tasksRemaining
|
|
187
|
+
summary: input.summary,
|
|
188
|
+
tasks_completed: JSON.stringify(input.tasksCompleted),
|
|
189
|
+
tasks_remaining: JSON.stringify(input.tasksRemaining),
|
|
146
190
|
decisions: JSON.stringify(decisions),
|
|
147
191
|
files_modified: JSON.stringify(input.filesModified ?? []),
|
|
148
192
|
blockers: JSON.stringify(input.blockers ?? []),
|
|
149
|
-
next_steps: input.nextSteps
|
|
193
|
+
next_steps: input.nextSteps,
|
|
150
194
|
tags: JSON.stringify(input.tags ?? []),
|
|
151
195
|
created_at: now,
|
|
152
196
|
});
|
|
@@ -197,9 +241,9 @@ function cmdList() {
|
|
|
197
241
|
// history
|
|
198
242
|
// ---------------------------------------------------------------------------
|
|
199
243
|
function cmdHistory() {
|
|
200
|
-
const projectDir = getFlag('project') ?? process.cwd();
|
|
201
244
|
const limit = parseInt(getFlag('limit') ?? '10', 10);
|
|
202
245
|
const db = getDatabase();
|
|
246
|
+
const projectDir = getEffectiveProjectDir(db);
|
|
203
247
|
const projectId = projectIdFromPath(projectDir);
|
|
204
248
|
const handoffs = getHandoffsByProject(db, projectId, limit);
|
|
205
249
|
if (handoffs.length === 0) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/db/queries.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
2
|
import type { ProjectRow, SnapshotRow, DecisionRow, HandoffRow } from '../lib/types.js';
|
|
3
|
+
/** Clear the prepared statement cache (useful for tests with fresh DB connections). */
|
|
4
|
+
export declare function clearStmtCache(): void;
|
|
3
5
|
export declare function upsertProject(db: Database.Database, id: string, normalizedPath: string, displayName: string): ProjectRow;
|
|
4
6
|
export declare function getProject(db: Database.Database, id: string): ProjectRow | undefined;
|
|
5
7
|
export declare function listProjects(db: Database.Database): ProjectRow[];
|
package/dist/db/queries.js
CHANGED
|
@@ -8,6 +8,10 @@ function getStmt(db, key, sql) {
|
|
|
8
8
|
}
|
|
9
9
|
return stmt;
|
|
10
10
|
}
|
|
11
|
+
/** Clear the prepared statement cache (useful for tests with fresh DB connections). */
|
|
12
|
+
export function clearStmtCache() {
|
|
13
|
+
stmtCache.clear();
|
|
14
|
+
}
|
|
11
15
|
// ─── Projects ────────────────────────────────────────────────────
|
|
12
16
|
export function upsertProject(db, id, normalizedPath, displayName) {
|
|
13
17
|
const now = new Date().toISOString();
|
package/dist/db/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,9 +12,6 @@ import { registerAmendSnapshotTool } from './tools/amend-snapshot.js';
|
|
|
12
12
|
import { registerStatusResource } from './resources/status.js';
|
|
13
13
|
import { registerProjectSnapshotResource } from './resources/project-snapshot.js';
|
|
14
14
|
import { registerProjectDecisionsResource } from './resources/project-decisions.js';
|
|
15
|
-
import { registerSyncSessionPrompt } from './prompts/sync-session.js';
|
|
16
|
-
import { registerResumeWorkPrompt } from './prompts/resume-work.js';
|
|
17
|
-
import { registerAutoResumePrompt } from './prompts/auto-resume.js';
|
|
18
15
|
async function main() {
|
|
19
16
|
const db = getDatabase();
|
|
20
17
|
const server = new McpServer({
|
|
@@ -33,10 +30,6 @@ async function main() {
|
|
|
33
30
|
registerStatusResource(server, db);
|
|
34
31
|
registerProjectSnapshotResource(server, db);
|
|
35
32
|
registerProjectDecisionsResource(server, db);
|
|
36
|
-
// Prompts
|
|
37
|
-
registerSyncSessionPrompt(server);
|
|
38
|
-
registerResumeWorkPrompt(server);
|
|
39
|
-
registerAutoResumePrompt(server, db);
|
|
40
33
|
// Connect via stdio
|
|
41
34
|
const transport = new StdioServerTransport();
|
|
42
35
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEpF,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,QAAQ;IACR,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtC,YAAY;IACZ,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,+BAA+B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,gCAAgC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE7C,oBAAoB;IACpB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-context-sync",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "MCP server for synchronizing work context between AI coding agents (Claude Code, Codex, Gemini, Cursor)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"LICENSE"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
-
"
|
|
17
|
+
"clean": "node -e \"const fs=require('fs');fs.rmSync('dist',{recursive:true,force:true})\"",
|
|
18
|
+
"build": "npm run clean && tsc",
|
|
18
19
|
"start": "node dist/index.js",
|
|
19
20
|
"dev": "tsx src/index.ts",
|
|
20
21
|
"cli": "tsx src/cli.ts",
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { projectIdFromPath, displayNameFromPath } from '../lib/project-id.js';
|
|
3
|
-
import { getProject, getLatestSnapshot, listProjects } from '../db/queries.js';
|
|
4
|
-
export function registerAutoResumePrompt(server, db) {
|
|
5
|
-
server.registerPrompt('auto-resume', {
|
|
6
|
-
title: 'Auto-Resume Context',
|
|
7
|
-
description: 'Check for existing context when opening a project. ' +
|
|
8
|
-
'Returns a concise summary or confirms fresh start.',
|
|
9
|
-
argsSchema: {
|
|
10
|
-
projectDir: z.string().describe('Absolute path to the project root directory'),
|
|
11
|
-
agent: z.string().describe('Current agent name (e.g., "claude-code", "codex", "gemini-cli")'),
|
|
12
|
-
},
|
|
13
|
-
}, ({ projectDir, agent }) => {
|
|
14
|
-
const projectId = projectIdFromPath(projectDir);
|
|
15
|
-
const displayName = displayNameFromPath(projectDir);
|
|
16
|
-
const project = getProject(db, projectId);
|
|
17
|
-
// No previous context
|
|
18
|
-
if (!project) {
|
|
19
|
-
const otherCount = listProjects(db).length;
|
|
20
|
-
const note = otherCount > 0
|
|
21
|
-
? `\n\n${otherCount} other project(s) have synced context. Use \`list-projects\` to see them.`
|
|
22
|
-
: '';
|
|
23
|
-
return {
|
|
24
|
-
messages: [
|
|
25
|
-
{ role: 'user', content: { type: 'text', text: `Starting work on \`${projectDir}\`.` } },
|
|
26
|
-
{ role: 'assistant', content: { type: 'text', text: `**Fresh start** — no previous context for "${displayName}".${note}\n\n` +
|
|
27
|
-
`When done, use the \`sync\` tool to save progress for future sessions.`, } },
|
|
28
|
-
],
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
const snapshot = getLatestSnapshot(db, projectId);
|
|
32
|
-
if (!snapshot) {
|
|
33
|
-
return {
|
|
34
|
-
messages: [
|
|
35
|
-
{ role: 'user', content: { type: 'text', text: `Starting work on "${displayName}".` } },
|
|
36
|
-
{ role: 'assistant', content: { type: 'text', text: `Project "${displayName}" exists but has no snapshots. Use \`sync\` to create one.`, } },
|
|
37
|
-
],
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
// Build concise summary
|
|
41
|
-
const remaining = JSON.parse(snapshot.tasks_remaining);
|
|
42
|
-
const decisions = JSON.parse(snapshot.decisions);
|
|
43
|
-
const lines = [
|
|
44
|
-
`**Resuming: ${displayName}**`,
|
|
45
|
-
'',
|
|
46
|
-
`Last session by **${snapshot.agent}** on ${snapshot.created_at.slice(0, 10)}` +
|
|
47
|
-
` (snapshot #${snapshot.sequence_number}, ${project.handoff_count} handoffs)`,
|
|
48
|
-
'',
|
|
49
|
-
`> ${snapshot.summary}`,
|
|
50
|
-
];
|
|
51
|
-
if (remaining.length > 0) {
|
|
52
|
-
lines.push('', `**Pending (${remaining.length}):**`);
|
|
53
|
-
for (const t of remaining.slice(0, 4))
|
|
54
|
-
lines.push(`- ${t}`);
|
|
55
|
-
if (remaining.length > 4)
|
|
56
|
-
lines.push(`- ...and ${remaining.length - 4} more`);
|
|
57
|
-
}
|
|
58
|
-
if (decisions.length > 0) {
|
|
59
|
-
lines.push('', `**Last decision:** ${decisions[decisions.length - 1].decision}`);
|
|
60
|
-
}
|
|
61
|
-
lines.push('', `Use \`resume\` with \`projectDir: "${projectDir}"\` and \`agent: "${agent}"\` to load the full snapshot and register the handoff.`);
|
|
62
|
-
return {
|
|
63
|
-
messages: [
|
|
64
|
-
{ role: 'user', content: { type: 'text', text: `Continuing work on \`${projectDir}\`. Load previous context.` } },
|
|
65
|
-
{ role: 'assistant', content: { type: 'text', text: lines.join('\n') } },
|
|
66
|
-
],
|
|
67
|
-
};
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=auto-resume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-resume.js","sourceRoot":"","sources":["../../src/prompts/auto-resume.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE/E,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,EAAqB;IAC/E,MAAM,CAAC,cAAc,CACnB,aAAa,EACb;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,qDAAqD;YACrD,oDAAoD;QACtD,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;SAC9F;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE1C,sBAAsB;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;YAC3C,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC;gBACzB,CAAC,CAAC,OAAO,UAAU,2EAA2E;gBAC9F,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO;gBACL,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,UAAU,KAAK,EAAE,EAAE;oBAC1G,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAClE,8CAA8C,WAAW,KAAK,IAAI,MAAM;gCACxE,wEAAwE,GACzE,EAAC;iBACH;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,WAAW,IAAI,EAAE,EAAE;oBACzG,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAClE,YAAY,WAAW,4DAA4D,GACpF,EAAC;iBACH;aACF,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAa,CAAC;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAgC,CAAC;QAEhF,MAAM,KAAK,GAAa;YACtB,eAAe,WAAW,IAAI;YAC9B,EAAE;YACF,qBAAqB,QAAQ,CAAC,KAAK,SAAS,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC5E,eAAe,QAAQ,CAAC,eAAe,KAAK,OAAO,CAAC,aAAa,YAAY;YAC/E,EAAE;YACF,KAAK,QAAQ,CAAC,OAAO,EAAE;SACxB,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,sCAAsC,UAAU,qBAAqB,KAAK,yDAAyD,CACpI,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wBAAwB,UAAU,4BAA4B,EAAE,EAAE;gBACnI,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;aAC3F;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerResumeWorkPrompt(server) {
|
|
3
|
-
server.registerPrompt('resume-work', {
|
|
4
|
-
title: 'Resume Previous Work',
|
|
5
|
-
description: 'Load the latest snapshot and orient for continuing work on a project.',
|
|
6
|
-
argsSchema: {
|
|
7
|
-
projectDir: z.string().describe('Project root directory'),
|
|
8
|
-
agent: z.string().describe('Current agent name'),
|
|
9
|
-
},
|
|
10
|
-
}, ({ projectDir, agent }) => ({
|
|
11
|
-
messages: [
|
|
12
|
-
{
|
|
13
|
-
role: 'user',
|
|
14
|
-
content: {
|
|
15
|
-
type: 'text',
|
|
16
|
-
text: `I'm switching to you (${agent}) to continue work on "${projectDir}".
|
|
17
|
-
|
|
18
|
-
Please call the "resume" tool to load the latest context snapshot, then:
|
|
19
|
-
1. Read the snapshot carefully
|
|
20
|
-
2. Summarize what the previous agent accomplished
|
|
21
|
-
3. Note any key decisions and blockers
|
|
22
|
-
4. Confirm the next steps
|
|
23
|
-
5. Ask me if I want to proceed with the suggested next steps or do something different`,
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=resume-work.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resume-work.js","sourceRoot":"","sources":["../../src/prompts/resume-work.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,cAAc,CACnB,aAAa,EACb;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,uEAAuE;QACzE,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;SACjD;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yBAAyB,KAAK,0BAA0B,UAAU;;;;;;;uFAOG;iBAC5E;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export function registerSyncSessionPrompt(server) {
|
|
3
|
-
server.registerPrompt('sync-session', {
|
|
4
|
-
title: 'Sync Current Session',
|
|
5
|
-
description: 'Guided prompt to capture a complete context snapshot for handoff to another agent.',
|
|
6
|
-
argsSchema: {
|
|
7
|
-
projectDir: z.string().describe('Project root directory'),
|
|
8
|
-
agent: z.string().describe('Current agent name'),
|
|
9
|
-
},
|
|
10
|
-
}, ({ projectDir, agent }) => ({
|
|
11
|
-
messages: [
|
|
12
|
-
{
|
|
13
|
-
role: 'user',
|
|
14
|
-
content: {
|
|
15
|
-
type: 'text',
|
|
16
|
-
text: `You are about to sync your work session on project at "${projectDir}" as agent "${agent}".
|
|
17
|
-
|
|
18
|
-
Please call the "sync" tool with a structured snapshot of your current session. Include:
|
|
19
|
-
1. A concise summary of what you accomplished
|
|
20
|
-
2. All tasks you completed (be specific)
|
|
21
|
-
3. All tasks still remaining or blocked
|
|
22
|
-
4. Any key decisions you made and WHY
|
|
23
|
-
5. Files you created or modified
|
|
24
|
-
6. Any blockers another agent should know about
|
|
25
|
-
7. Specific, actionable next steps -- what should the next agent do FIRST?
|
|
26
|
-
|
|
27
|
-
Be concrete and specific. The next agent has NO context about your conversation -- they will only see this snapshot.`,
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
}));
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=sync-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-session.js","sourceRoot":"","sources":["../../src/prompts/sync-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,cAAc,CACnB,cAAc,EACd;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,oFAAoF;QACtF,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;SACjD;KACF,EACD,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0DAA0D,UAAU,eAAe,KAAK;;;;;;;;;;;qHAWW;iBAC1G;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|