mcp-context-sync 1.0.6 → 1.0.8
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 +172 -59
- package/dist/cli.js +586 -54
- package/dist/cli.js.map +1 -1
- package/dist/lib/snapshot-renderer.d.ts +4 -0
- package/dist/lib/snapshot-renderer.js +14 -0
- package/dist/lib/snapshot-renderer.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,38 +1,117 @@
|
|
|
1
1
|
# mcp-context-sync
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Synchronize work context between AI coding agents. One agent saves progress, another picks up exactly where it left off.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Supports: **Claude Code** · **Codex** · **Gemini CLI** · **Cursor**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Quick Start
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
### Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g mcp-context-sync
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
### Configure all AI clients
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
```bash
|
|
18
|
+
context-sync install --all
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Verify
|
|
18
22
|
|
|
19
23
|
```bash
|
|
20
|
-
|
|
24
|
+
context-sync doctor
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Requirements
|
|
28
|
+
|
|
29
|
+
- **Node.js 18+** (20 or 22 LTS recommended)
|
|
30
|
+
- Node 24+ may require Visual Studio Build Tools on Windows (see [Troubleshooting](#windows--node-24-better-sqlite3-build-fails))
|
|
31
|
+
|
|
32
|
+
## What gets installed
|
|
33
|
+
|
|
34
|
+
Two binaries:
|
|
35
|
+
|
|
36
|
+
- `mcp-context-sync` — MCP server (stdio transport, used by AI clients)
|
|
37
|
+
- `context-sync` — CLI for manual operations and diagnostics
|
|
38
|
+
|
|
39
|
+
## Concepts
|
|
40
|
+
|
|
41
|
+
### MCP Tools (used by AI agents)
|
|
42
|
+
|
|
43
|
+
These are the tools the MCP server exposes. AI agents call them automatically:
|
|
44
|
+
|
|
45
|
+
| Tool | Description |
|
|
46
|
+
|------|-------------|
|
|
47
|
+
| `sync` | Save a structured snapshot of current work state |
|
|
48
|
+
| `resume` | Load the latest snapshot for a project |
|
|
49
|
+
| `log-decision` | Record an architectural decision |
|
|
50
|
+
| `get-history` | View timeline of snapshots and handoffs |
|
|
51
|
+
| `list-projects` | List all synced projects |
|
|
52
|
+
| `search-snapshots` | Full-text search across snapshots |
|
|
53
|
+
| `amend-snapshot` | Update the most recent snapshot |
|
|
54
|
+
|
|
55
|
+
### MCP Resources (read by AI agents)
|
|
56
|
+
|
|
57
|
+
| Resource | Description |
|
|
58
|
+
|----------|-------------|
|
|
59
|
+
| `status` | Server status and stats |
|
|
60
|
+
| `project-snapshot` | Latest snapshot for a project |
|
|
61
|
+
| `project-decisions` | Decision log for a project |
|
|
62
|
+
|
|
63
|
+
### CLI Commands (used by you in terminal)
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
context-sync resume [--project <path>] [--agent <name>] [--brief] [--json] [--peek]
|
|
67
|
+
context-sync sync --file <path> | --json '<json>' | stdin | --interactive
|
|
68
|
+
context-sync auto-sync [--project <path>] [--agent <name>]
|
|
69
|
+
context-sync list
|
|
70
|
+
context-sync history [--project <path>] [--limit <n>]
|
|
71
|
+
context-sync doctor
|
|
72
|
+
context-sync install [--claude] [--codex] [--gemini] [--cursor] [--all]
|
|
21
73
|
```
|
|
22
74
|
|
|
23
|
-
|
|
75
|
+
If `--project` is omitted, the git repository root is auto-detected. Falls back to the current working directory when not inside a git repo.
|
|
24
76
|
|
|
25
|
-
|
|
26
|
-
|--------|---------|
|
|
27
|
-
| `mcp-context-sync` | MCP server (stdio transport) |
|
|
28
|
-
| `context-sync` | CLI for agents that run shell commands |
|
|
77
|
+
#### Flags
|
|
29
78
|
|
|
30
|
-
|
|
79
|
+
| Flag | Commands | Description |
|
|
80
|
+
|------|----------|-------------|
|
|
81
|
+
| `--project <path>` | resume, history, auto-sync | Project directory override |
|
|
82
|
+
| `--agent <name>` | resume, sync, auto-sync | Agent name for handoff tracking |
|
|
83
|
+
| `--peek` | resume | Read-only mode — prints the snapshot without recording a handoff |
|
|
84
|
+
| `--brief` | resume | Compact human-readable summary (implies `--peek`) |
|
|
85
|
+
| `--json` | resume, sync | Raw JSON output for `resume`; inline JSON input for `sync` |
|
|
86
|
+
| `--file <path>` | sync | Read JSON input from a file (recommended for PowerShell) |
|
|
87
|
+
| `--interactive`, `-i` | sync | Guided step-by-step snapshot creation |
|
|
88
|
+
| `--limit <n>` | history | Max entries to show (default 10) |
|
|
89
|
+
|
|
90
|
+
### Slash Commands / Skills (optional, per-client)
|
|
31
91
|
|
|
32
|
-
|
|
92
|
+
Skills like `/resume-project` and `/sync-project` are NOT part of this package. They are client-specific configurations (e.g., Claude Code skills in `~/.agents/skills/`). The MCP tools work without them.
|
|
93
|
+
|
|
94
|
+
## Client Configuration
|
|
33
95
|
|
|
34
96
|
### Claude Code
|
|
35
97
|
|
|
98
|
+
Add to `~/.claude.json` (or use `claude mcp add`):
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"mcpServers": {
|
|
103
|
+
"context-sync": {
|
|
104
|
+
"type": "stdio",
|
|
105
|
+
"command": "mcp-context-sync",
|
|
106
|
+
"args": [],
|
|
107
|
+
"env": {}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Or via CLI:
|
|
114
|
+
|
|
36
115
|
```bash
|
|
37
116
|
claude mcp add --scope user context-sync -- mcp-context-sync
|
|
38
117
|
```
|
|
@@ -53,7 +132,7 @@ Add to `~/.codex/mcp.json`:
|
|
|
53
132
|
|
|
54
133
|
### Gemini CLI
|
|
55
134
|
|
|
56
|
-
Add to
|
|
135
|
+
Add to `~/.gemini/antigravity/mcp_config.json`:
|
|
57
136
|
|
|
58
137
|
```json
|
|
59
138
|
{
|
|
@@ -65,62 +144,93 @@ Add to your `mcp_config.json`:
|
|
|
65
144
|
}
|
|
66
145
|
```
|
|
67
146
|
|
|
68
|
-
|
|
147
|
+
### Cursor
|
|
69
148
|
|
|
70
|
-
|
|
71
|
-
|------|-------------|
|
|
72
|
-
| `sync` | Save a structured snapshot of current work state |
|
|
73
|
-
| `resume` | Load the latest snapshot for a project |
|
|
74
|
-
| `log-decision` | Record an architectural decision |
|
|
75
|
-
| `get-history` | View timeline of snapshots and handoffs |
|
|
76
|
-
| `list-projects` | List all synced projects |
|
|
77
|
-
| `search-snapshots` | Full-text search across snapshots |
|
|
78
|
-
| `amend-snapshot` | Update the most recent snapshot |
|
|
149
|
+
Add to `~/.cursor/mcp.json`:
|
|
79
150
|
|
|
80
|
-
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"mcpServers": {
|
|
154
|
+
"context-sync": {
|
|
155
|
+
"type": "stdio",
|
|
156
|
+
"command": "mcp-context-sync",
|
|
157
|
+
"args": [],
|
|
158
|
+
"env": {}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
81
163
|
|
|
82
|
-
|
|
83
|
-
|----------|-------------|
|
|
84
|
-
| `status` | Server status and stats |
|
|
85
|
-
| `project-snapshot` | Latest snapshot for a project |
|
|
86
|
-
| `project-decisions` | Decision log for a project |
|
|
164
|
+
## Storage
|
|
87
165
|
|
|
88
|
-
|
|
166
|
+
- **Database:** `~/.agents/context-sync/data/context-sync.sqlite`
|
|
167
|
+
- **WAL mode** enabled for concurrent access
|
|
168
|
+
- Projects identified by SHA-256 hash of normalized absolute path (lowercase, forward slashes, no trailing slash)
|
|
169
|
+
- All agents resolve to the same project as long as they use the same absolute path to the project root
|
|
89
170
|
|
|
90
|
-
|
|
171
|
+
## Troubleshooting
|
|
91
172
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
173
|
+
### Windows + Node 24: `better-sqlite3` build fails
|
|
174
|
+
|
|
175
|
+
`better-sqlite3` uses native binaries. Node 24 may not have prebuilt binaries yet.
|
|
176
|
+
|
|
177
|
+
**Fix (recommended):** Use Node 20 or 22 LTS:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
nvm install 22
|
|
181
|
+
nvm use 22
|
|
182
|
+
npm install -g mcp-context-sync
|
|
97
183
|
```
|
|
98
184
|
|
|
99
|
-
|
|
185
|
+
**Fix (alternative):** Install Visual Studio Build Tools:
|
|
100
186
|
|
|
101
|
-
|
|
187
|
+
1. Download from https://visualstudio.microsoft.com/visual-cpp-build-tools/
|
|
188
|
+
2. Install "Desktop development with C++"
|
|
189
|
+
3. Retry: `npm install -g mcp-context-sync`
|
|
102
190
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
191
|
+
### MCP shows "Failed to connect"
|
|
192
|
+
|
|
193
|
+
1. Ensure `mcp-context-sync` is in your PATH:
|
|
194
|
+
- Linux/macOS: `which mcp-context-sync`
|
|
195
|
+
- Windows: `where mcp-context-sync`
|
|
196
|
+
2. If using `npx`, switch to global install -- `npx` adds 2-3s latency that can exceed MCP health check timeouts
|
|
197
|
+
3. Restart your AI client after installing
|
|
198
|
+
|
|
199
|
+
### "command not found" after install
|
|
111
200
|
|
|
112
|
-
|
|
201
|
+
On Windows, close and reopen your terminal after `npm i -g` to refresh PATH.
|
|
202
|
+
|
|
203
|
+
### Project not found on resume
|
|
204
|
+
|
|
205
|
+
- Projects are matched by exact absolute path (normalized to lowercase with forward slashes)
|
|
206
|
+
- If you're in a subdirectory, the CLI auto-detects git root via `git rev-parse --show-toplevel`, then walks up parent directories to find a known project in the database
|
|
207
|
+
- Run `context-sync list` to see all synced projects and their paths
|
|
208
|
+
- Use `--project` flag to specify the path explicitly
|
|
209
|
+
|
|
210
|
+
## CLI Examples
|
|
113
211
|
|
|
114
212
|
```bash
|
|
115
|
-
# Resume latest snapshot (cwd
|
|
213
|
+
# Resume latest snapshot (auto-detects project from cwd or git root)
|
|
116
214
|
context-sync resume --agent codex
|
|
117
215
|
|
|
118
216
|
# Peek at snapshot without recording a handoff
|
|
119
217
|
context-sync resume --peek
|
|
120
218
|
|
|
219
|
+
# Print a compact summary for fast reading
|
|
220
|
+
context-sync resume --brief
|
|
221
|
+
|
|
222
|
+
# Emit raw JSON for piping into other tools
|
|
223
|
+
context-sync resume --json
|
|
224
|
+
|
|
121
225
|
# Save a snapshot from a JSON file
|
|
122
226
|
context-sync sync --file snapshot.json
|
|
123
227
|
|
|
228
|
+
# Create a snapshot interactively (step-by-step prompts)
|
|
229
|
+
context-sync sync --interactive --agent codex
|
|
230
|
+
|
|
231
|
+
# Auto-save remaining context on session exit
|
|
232
|
+
context-sync auto-sync --agent claude-code
|
|
233
|
+
|
|
124
234
|
# List all synced projects
|
|
125
235
|
context-sync list
|
|
126
236
|
|
|
@@ -128,13 +238,16 @@ context-sync list
|
|
|
128
238
|
context-sync history --limit 5
|
|
129
239
|
```
|
|
130
240
|
|
|
131
|
-
##
|
|
132
|
-
|
|
133
|
-
SQLite database at `~/.agents/context-sync/data/context-sync.sqlite`. Created automatically on first use. WAL mode enabled for concurrent access.
|
|
241
|
+
## Development
|
|
134
242
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
243
|
+
```bash
|
|
244
|
+
git clone https://github.com/Pueyo10/context-sync-mcp.git
|
|
245
|
+
cd context-sync-mcp
|
|
246
|
+
npm install
|
|
247
|
+
npm run build
|
|
248
|
+
npm test
|
|
249
|
+
npm run release # test + build + bump patch + publish + push
|
|
250
|
+
```
|
|
138
251
|
|
|
139
252
|
## License
|
|
140
253
|
|
package/dist/cli.js
CHANGED
|
@@ -9,13 +9,16 @@
|
|
|
9
9
|
* context-sync list
|
|
10
10
|
* context-sync history [--project <path>] [--limit <n>]
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { createInterface } from 'node:readline';
|
|
13
|
+
import { readFileSync, writeFileSync, existsSync, statSync, mkdirSync } from 'node:fs';
|
|
14
|
+
import { execSync } from 'node:child_process';
|
|
15
|
+
import { dirname, join } from 'node:path';
|
|
16
|
+
import { homedir, platform } from 'node:os';
|
|
14
17
|
import { getDatabase, closeDatabase } from './db/connection.js';
|
|
15
18
|
import { upsertProject, getProject, getNextSequenceNumber, insertSnapshot, insertDecision, insertHandoff, updateProjectSyncStats, getLatestSnapshot, getProjectAgents, listProjects, getHandoffsByProject, } from './db/queries.js';
|
|
16
19
|
import { projectIdFromPath, normalizePath, displayNameFromPath, } from './lib/project-id.js';
|
|
17
20
|
import { generateId } from './lib/uuid.js';
|
|
18
|
-
import { renderSnapshotMarkdown } from './lib/snapshot-renderer.js';
|
|
21
|
+
import { renderSnapshotMarkdown, renderSnapshotBrief } from './lib/snapshot-renderer.js';
|
|
19
22
|
import { SyncInputSchema } from './lib/types.js';
|
|
20
23
|
// ---------------------------------------------------------------------------
|
|
21
24
|
// Arg helpers
|
|
@@ -72,14 +75,39 @@ function resolveProjectDir(db, startDir) {
|
|
|
72
75
|
}
|
|
73
76
|
return null;
|
|
74
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Try to detect the git repository root from the current working directory.
|
|
80
|
+
* Returns the git root path (forward slashes, even on Windows) or null.
|
|
81
|
+
*/
|
|
82
|
+
function detectGitRoot() {
|
|
83
|
+
try {
|
|
84
|
+
const gitRoot = execSync('git rev-parse --show-toplevel', {
|
|
85
|
+
encoding: 'utf-8',
|
|
86
|
+
stdio: ['pipe', 'pipe', 'pipe'], // suppress stderr
|
|
87
|
+
}).trim();
|
|
88
|
+
if (gitRoot)
|
|
89
|
+
return gitRoot;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Not a git repo or git not installed — fall through
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
75
96
|
/**
|
|
76
97
|
* Resolve the effective project directory for CLI commands.
|
|
77
|
-
*
|
|
98
|
+
* Priority:
|
|
99
|
+
* 1. --project flag (explicit user choice)
|
|
100
|
+
* 2. git repository root (auto-detected via `git rev-parse`)
|
|
101
|
+
* 3. Walk up from cwd to find a known project in the DB
|
|
102
|
+
* 4. process.cwd() as last resort
|
|
78
103
|
*/
|
|
79
104
|
function getEffectiveProjectDir(db) {
|
|
80
105
|
const explicit = getFlag('project');
|
|
81
106
|
if (explicit)
|
|
82
107
|
return explicit;
|
|
108
|
+
const gitRoot = detectGitRoot();
|
|
109
|
+
if (gitRoot)
|
|
110
|
+
return gitRoot;
|
|
83
111
|
const resolved = resolveProjectDir(db, process.cwd());
|
|
84
112
|
return resolved ?? process.cwd();
|
|
85
113
|
}
|
|
@@ -88,7 +116,10 @@ function getEffectiveProjectDir(db) {
|
|
|
88
116
|
// ---------------------------------------------------------------------------
|
|
89
117
|
function cmdResume() {
|
|
90
118
|
const agent = getFlag('agent') ?? 'codex';
|
|
91
|
-
const
|
|
119
|
+
const wantJson = argv.includes('--json');
|
|
120
|
+
const wantBrief = argv.includes('--brief');
|
|
121
|
+
// --json and --brief imply --peek (no handoff registration)
|
|
122
|
+
const peek = argv.includes('--peek') || wantJson || wantBrief;
|
|
92
123
|
const db = getDatabase();
|
|
93
124
|
const projectDir = getEffectiveProjectDir(db);
|
|
94
125
|
const projectId = projectIdFromPath(projectDir);
|
|
@@ -130,51 +161,35 @@ function cmdResume() {
|
|
|
130
161
|
updateProjectSyncStats(db, projectId);
|
|
131
162
|
})();
|
|
132
163
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
164
|
+
// Output priority: --json > --brief > default (full markdown)
|
|
165
|
+
if (wantJson) {
|
|
166
|
+
console.log(JSON.stringify(snapshot));
|
|
167
|
+
}
|
|
168
|
+
else if (wantBrief) {
|
|
169
|
+
console.log(renderSnapshotBrief(snapshot, displayName));
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
const agents = getProjectAgents(db, projectId);
|
|
173
|
+
console.log(renderSnapshotMarkdown(snapshot, displayName, {
|
|
174
|
+
totalSnapshots: project.snapshot_count,
|
|
175
|
+
totalHandoffs: project.handoff_count + (peek ? 0 : 1),
|
|
176
|
+
agents,
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
139
179
|
closeDatabase();
|
|
140
180
|
}
|
|
141
181
|
// ---------------------------------------------------------------------------
|
|
142
182
|
// sync
|
|
143
183
|
// ---------------------------------------------------------------------------
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
console.error(' or: context-sync sync --json \'{"projectDir":"...","agent":"codex",...}\'');
|
|
149
|
-
console.error(' or: <json> | context-sync sync');
|
|
150
|
-
process.exit(1);
|
|
151
|
-
}
|
|
152
|
-
let parsed;
|
|
153
|
-
try {
|
|
154
|
-
parsed = JSON.parse(raw);
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
console.error('Error: invalid JSON input');
|
|
158
|
-
process.exit(1);
|
|
159
|
-
}
|
|
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
|
-
}
|
|
167
|
-
process.exit(1);
|
|
168
|
-
}
|
|
169
|
-
const input = result.data;
|
|
170
|
-
const projectDir = input.projectDir;
|
|
171
|
-
const agent = input.agent;
|
|
184
|
+
/**
|
|
185
|
+
* Save the snapshot to the database (shared by cmdSync and cmdSyncInteractive).
|
|
186
|
+
*/
|
|
187
|
+
function saveSnapshot(projectDir, agent, summary, tasksCompleted, tasksRemaining, decisions, filesModified, blockers, nextSteps, tags) {
|
|
172
188
|
const db = getDatabase();
|
|
173
189
|
const projectId = projectIdFromPath(projectDir);
|
|
174
190
|
const normalized = normalizePath(projectDir);
|
|
175
191
|
const displayName = displayNameFromPath(projectDir);
|
|
176
192
|
const now = new Date().toISOString();
|
|
177
|
-
const decisions = input.decisions ?? [];
|
|
178
193
|
const { snapshotId, seqNum } = db.transaction(() => {
|
|
179
194
|
upsertProject(db, projectId, normalized, displayName);
|
|
180
195
|
const seqNum = getNextSequenceNumber(db, projectId);
|
|
@@ -184,14 +199,14 @@ function cmdSync() {
|
|
|
184
199
|
project_id: projectId,
|
|
185
200
|
sequence_number: seqNum,
|
|
186
201
|
agent,
|
|
187
|
-
summary
|
|
188
|
-
tasks_completed: JSON.stringify(
|
|
189
|
-
tasks_remaining: JSON.stringify(
|
|
202
|
+
summary,
|
|
203
|
+
tasks_completed: JSON.stringify(tasksCompleted),
|
|
204
|
+
tasks_remaining: JSON.stringify(tasksRemaining),
|
|
190
205
|
decisions: JSON.stringify(decisions),
|
|
191
|
-
files_modified: JSON.stringify(
|
|
192
|
-
blockers: JSON.stringify(
|
|
193
|
-
next_steps:
|
|
194
|
-
tags: JSON.stringify(
|
|
206
|
+
files_modified: JSON.stringify(filesModified),
|
|
207
|
+
blockers: JSON.stringify(blockers),
|
|
208
|
+
next_steps: nextSteps,
|
|
209
|
+
tags: JSON.stringify(tags),
|
|
195
210
|
created_at: now,
|
|
196
211
|
});
|
|
197
212
|
for (const d of decisions) {
|
|
@@ -211,11 +226,123 @@ function cmdSync() {
|
|
|
211
226
|
updateProjectSyncStats(db, projectId);
|
|
212
227
|
return { snapshotId, seqNum };
|
|
213
228
|
})();
|
|
229
|
+
closeDatabase();
|
|
230
|
+
return { snapshotId, seqNum, displayName, normalized };
|
|
231
|
+
}
|
|
232
|
+
function cmdSync() {
|
|
233
|
+
// Check for interactive mode
|
|
234
|
+
if (argv.includes('--interactive') || argv.includes('-i')) {
|
|
235
|
+
cmdSyncInteractive();
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
const raw = readJsonInput();
|
|
239
|
+
if (!raw.trim()) {
|
|
240
|
+
console.error('Usage: context-sync sync --file <path.json>');
|
|
241
|
+
console.error(' or: context-sync sync --json \'{"projectDir":"...","agent":"codex",...}\'');
|
|
242
|
+
console.error(' or: context-sync sync --interactive | -i');
|
|
243
|
+
console.error(' or: <json> | context-sync sync');
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
let parsed;
|
|
247
|
+
try {
|
|
248
|
+
parsed = JSON.parse(raw);
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
console.error('Error: invalid JSON input');
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
const result = SyncInputSchema.safeParse(parsed);
|
|
255
|
+
if (!result.success) {
|
|
256
|
+
console.error('Error: invalid sync input');
|
|
257
|
+
for (const issue of result.error.issues) {
|
|
258
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
|
|
259
|
+
console.error(` ${path}: ${issue.message}`);
|
|
260
|
+
}
|
|
261
|
+
process.exit(1);
|
|
262
|
+
}
|
|
263
|
+
const input = result.data;
|
|
264
|
+
const { snapshotId, seqNum, displayName, normalized } = saveSnapshot(input.projectDir, input.agent, input.summary, input.tasksCompleted, input.tasksRemaining, input.decisions ?? [], (input.filesModified ?? []).map((f) => (typeof f === 'string' ? f : f.path)), input.blockers ?? [], input.nextSteps, input.tags ?? []);
|
|
214
265
|
console.log(`Snapshot #${seqNum} saved for "${displayName}"`);
|
|
215
266
|
console.log(` ID: ${snapshotId}`);
|
|
216
|
-
console.log(` Agent: ${agent}`);
|
|
267
|
+
console.log(` Agent: ${input.agent}`);
|
|
217
268
|
console.log(` Path: ${normalized}`);
|
|
218
|
-
|
|
269
|
+
}
|
|
270
|
+
// ---------------------------------------------------------------------------
|
|
271
|
+
// sync --interactive
|
|
272
|
+
// ---------------------------------------------------------------------------
|
|
273
|
+
function cmdSyncInteractive() {
|
|
274
|
+
const rl = createInterface({
|
|
275
|
+
input: process.stdin,
|
|
276
|
+
output: process.stdout,
|
|
277
|
+
});
|
|
278
|
+
function ask(prompt) {
|
|
279
|
+
return new Promise((resolve) => {
|
|
280
|
+
rl.question(prompt, (answer) => resolve(answer));
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
async function askRequired(prompt) {
|
|
284
|
+
// eslint-disable-next-line no-constant-condition
|
|
285
|
+
while (true) {
|
|
286
|
+
const answer = (await ask(prompt)).trim();
|
|
287
|
+
if (answer)
|
|
288
|
+
return answer;
|
|
289
|
+
console.log(' (This field is required. Please enter a value.)');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function splitCsv(input) {
|
|
293
|
+
if (!input.trim())
|
|
294
|
+
return [];
|
|
295
|
+
return input.split(',').map((s) => s.trim()).filter(Boolean);
|
|
296
|
+
}
|
|
297
|
+
async function run() {
|
|
298
|
+
const db = getDatabase();
|
|
299
|
+
const projectDir = getEffectiveProjectDir(db);
|
|
300
|
+
closeDatabase();
|
|
301
|
+
const agent = getFlag('agent') ?? 'claude-code';
|
|
302
|
+
const displayName = displayNameFromPath(projectDir);
|
|
303
|
+
console.log('');
|
|
304
|
+
console.log(`Project: ${normalizePath(projectDir)} (${displayName})`);
|
|
305
|
+
console.log(`Agent: ${agent}`);
|
|
306
|
+
console.log('');
|
|
307
|
+
const summary = await askRequired('Summary (required): ');
|
|
308
|
+
const tasksCompletedRaw = await ask('Tasks completed (comma-separated, empty to skip): ');
|
|
309
|
+
const tasksCompleted = splitCsv(tasksCompletedRaw);
|
|
310
|
+
const tasksRemainingRaw = await ask('Tasks remaining (comma-separated, empty to skip): ');
|
|
311
|
+
const tasksRemaining = splitCsv(tasksRemainingRaw);
|
|
312
|
+
// Decisions loop
|
|
313
|
+
const decisions = [];
|
|
314
|
+
// eslint-disable-next-line no-constant-condition
|
|
315
|
+
while (true) {
|
|
316
|
+
const decisionText = (await ask('Key decision (empty to skip): ')).trim();
|
|
317
|
+
if (!decisionText)
|
|
318
|
+
break;
|
|
319
|
+
const reasoning = (await ask(' Reasoning: ')).trim();
|
|
320
|
+
decisions.push({ decision: decisionText, reasoning: reasoning || '(none)' });
|
|
321
|
+
const another = (await ask(' Add another decision? (y/n): ')).trim().toLowerCase();
|
|
322
|
+
if (another !== 'y' && another !== 'yes')
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
const filesModifiedRaw = await ask('Files modified (comma-separated, empty to skip): ');
|
|
326
|
+
const filesModified = splitCsv(filesModifiedRaw);
|
|
327
|
+
const blockersRaw = await ask('Blockers (comma-separated, empty to skip): ');
|
|
328
|
+
const blockers = splitCsv(blockersRaw);
|
|
329
|
+
const nextSteps = await askRequired('Next steps (required): ');
|
|
330
|
+
const tagsRaw = await ask('Tags (comma-separated, empty to skip): ');
|
|
331
|
+
const tags = splitCsv(tagsRaw);
|
|
332
|
+
rl.close();
|
|
333
|
+
process.stdout.write('\nSaving snapshot... ');
|
|
334
|
+
const { snapshotId, seqNum, displayName: name, normalized } = saveSnapshot(projectDir, agent, summary, tasksCompleted, tasksRemaining, decisions, filesModified, blockers, nextSteps, tags);
|
|
335
|
+
console.log('Done!');
|
|
336
|
+
console.log(`Snapshot #${seqNum} saved for "${name}"`);
|
|
337
|
+
console.log(` ID: ${snapshotId}`);
|
|
338
|
+
console.log(` Agent: ${agent}`);
|
|
339
|
+
console.log(` Path: ${normalized}`);
|
|
340
|
+
}
|
|
341
|
+
run().catch((err) => {
|
|
342
|
+
rl.close();
|
|
343
|
+
console.error('Error:', err);
|
|
344
|
+
process.exit(1);
|
|
345
|
+
});
|
|
219
346
|
}
|
|
220
347
|
// ---------------------------------------------------------------------------
|
|
221
348
|
// list
|
|
@@ -257,22 +384,418 @@ function cmdHistory() {
|
|
|
257
384
|
closeDatabase();
|
|
258
385
|
}
|
|
259
386
|
// ---------------------------------------------------------------------------
|
|
387
|
+
// auto-sync
|
|
388
|
+
// ---------------------------------------------------------------------------
|
|
389
|
+
function cmdAutoSync() {
|
|
390
|
+
const agent = getFlag('agent') ?? 'claude-code';
|
|
391
|
+
let db;
|
|
392
|
+
try {
|
|
393
|
+
db = getDatabase();
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
// DB not accessible — exit silently
|
|
397
|
+
process.exit(0);
|
|
398
|
+
}
|
|
399
|
+
const projectDir = getEffectiveProjectDir(db);
|
|
400
|
+
const projectId = projectIdFromPath(projectDir);
|
|
401
|
+
const project = getProject(db, projectId);
|
|
402
|
+
if (!project) {
|
|
403
|
+
// No existing project — exit silently, don't create one
|
|
404
|
+
closeDatabase();
|
|
405
|
+
process.exit(0);
|
|
406
|
+
}
|
|
407
|
+
const latestSnapshot = getLatestSnapshot(db, projectId);
|
|
408
|
+
// Carry over remaining tasks from the latest snapshot
|
|
409
|
+
let tasksRemaining = '[]';
|
|
410
|
+
if (latestSnapshot) {
|
|
411
|
+
tasksRemaining = latestSnapshot.tasks_remaining ?? '[]';
|
|
412
|
+
}
|
|
413
|
+
const now = new Date().toISOString();
|
|
414
|
+
try {
|
|
415
|
+
db.transaction(() => {
|
|
416
|
+
const seqNum = getNextSequenceNumber(db, projectId);
|
|
417
|
+
const snapshotId = generateId();
|
|
418
|
+
insertSnapshot(db, {
|
|
419
|
+
id: snapshotId,
|
|
420
|
+
project_id: projectId,
|
|
421
|
+
sequence_number: seqNum,
|
|
422
|
+
agent,
|
|
423
|
+
summary: 'Auto-saved session context on exit',
|
|
424
|
+
tasks_completed: '[]',
|
|
425
|
+
tasks_remaining: tasksRemaining,
|
|
426
|
+
decisions: '[]',
|
|
427
|
+
files_modified: '[]',
|
|
428
|
+
blockers: '[]',
|
|
429
|
+
next_steps: 'Session ended automatically. Use /resume-project to continue.',
|
|
430
|
+
tags: '["auto-sync"]',
|
|
431
|
+
created_at: now,
|
|
432
|
+
});
|
|
433
|
+
updateProjectSyncStats(db, projectId);
|
|
434
|
+
})();
|
|
435
|
+
}
|
|
436
|
+
catch {
|
|
437
|
+
// Swallow errors — must not fail on session exit
|
|
438
|
+
}
|
|
439
|
+
closeDatabase();
|
|
440
|
+
}
|
|
441
|
+
// ---------------------------------------------------------------------------
|
|
442
|
+
// doctor
|
|
443
|
+
// ---------------------------------------------------------------------------
|
|
444
|
+
function cmdDoctor() {
|
|
445
|
+
const version = '1.0.7';
|
|
446
|
+
const issues = [];
|
|
447
|
+
console.log(`context-sync doctor v${version}\n`);
|
|
448
|
+
// 1. Node.js version
|
|
449
|
+
try {
|
|
450
|
+
const nodeVersion = process.version;
|
|
451
|
+
const nodeMajor = parseInt(nodeVersion.slice(1), 10);
|
|
452
|
+
if (nodeMajor >= 23) {
|
|
453
|
+
console.log(`Node.js: ${nodeVersion} \u26A0`);
|
|
454
|
+
issues.push(`\u26A0 Node.js ${nodeVersion} detected \u2014 better-sqlite3 may lack prebuilt binaries.\n Fix: Use Node 20-22 LTS, or install Visual Studio Build Tools on Windows.`);
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
console.log(`Node.js: ${nodeVersion} \u2713`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
catch {
|
|
461
|
+
console.log('Node.js: unknown \u26A0');
|
|
462
|
+
}
|
|
463
|
+
// 2. better-sqlite3 — test by opening the database
|
|
464
|
+
let sqliteOk = false;
|
|
465
|
+
try {
|
|
466
|
+
const db = getDatabase();
|
|
467
|
+
closeDatabase();
|
|
468
|
+
void db;
|
|
469
|
+
sqliteOk = true;
|
|
470
|
+
console.log('better-sqlite3: loaded \u2713');
|
|
471
|
+
}
|
|
472
|
+
catch (e) {
|
|
473
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
474
|
+
console.log('better-sqlite3: FAILED \u2717');
|
|
475
|
+
issues.push(`\u2717 better-sqlite3 failed to load: ${msg}\n Fix: npm i -g mcp-context-sync (with Node 20-22), or install Visual Studio Build Tools on Windows.`);
|
|
476
|
+
}
|
|
477
|
+
// 3. SQLite DB
|
|
478
|
+
const dbPath = join(homedir(), '.agents', 'context-sync', 'data', 'context-sync.sqlite');
|
|
479
|
+
const dbPathDisplay = '~/.agents/context-sync/data/context-sync.sqlite';
|
|
480
|
+
try {
|
|
481
|
+
if (existsSync(dbPath)) {
|
|
482
|
+
const stats = statSync(dbPath);
|
|
483
|
+
const sizeKb = Math.round(stats.size / 1024);
|
|
484
|
+
console.log(`Database: ${dbPathDisplay} (${sizeKb} KB) \u2713`);
|
|
485
|
+
}
|
|
486
|
+
else {
|
|
487
|
+
console.log('Database: not found \u2717');
|
|
488
|
+
issues.push(`\u2717 Database not found at ${dbPathDisplay}\n Fix: Run a sync command first to create the database.`);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
catch {
|
|
492
|
+
console.log('Database: error checking \u26A0');
|
|
493
|
+
}
|
|
494
|
+
// 4 & 5. Binary checks (mcp-context-sync and context-sync)
|
|
495
|
+
const isWin = platform() === 'win32';
|
|
496
|
+
const whichCmd = isWin ? 'where' : 'which';
|
|
497
|
+
for (const bin of ['mcp-context-sync', 'context-sync']) {
|
|
498
|
+
const label = bin === 'mcp-context-sync' ? 'MCP server' : 'CLI';
|
|
499
|
+
try {
|
|
500
|
+
const loc = execSync(`${whichCmd} ${bin}`, {
|
|
501
|
+
encoding: 'utf-8',
|
|
502
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
503
|
+
}).trim().split(/\r?\n/)[0];
|
|
504
|
+
console.log(`${(label + ':').padEnd(18)}${loc} \u2713`);
|
|
505
|
+
}
|
|
506
|
+
catch {
|
|
507
|
+
console.log(`${(label + ':').padEnd(18)}not in PATH \u2717`);
|
|
508
|
+
issues.push(`\u2717 ${bin} not found in PATH.\n Fix: npm i -g mcp-context-sync`);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
// 6. Client configs
|
|
512
|
+
console.log('\nClient configs:');
|
|
513
|
+
const home = homedir();
|
|
514
|
+
const clients = [
|
|
515
|
+
{
|
|
516
|
+
name: 'Claude Code',
|
|
517
|
+
checks: [{ file: join(home, '.claude.json'), key: 'mcpServers' }],
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
name: 'Codex',
|
|
521
|
+
checks: [
|
|
522
|
+
{ file: join(home, '.codex', 'mcp.json'), key: 'mcpServers' },
|
|
523
|
+
{ file: join(home, '.codex', 'config.toml'), textSearch: 'context-sync' },
|
|
524
|
+
],
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
name: 'Gemini',
|
|
528
|
+
checks: [{ file: join(home, '.gemini', 'antigravity', 'mcp_config.json'), key: 'mcpServers' }],
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
name: 'Cursor',
|
|
532
|
+
checks: [{ file: join(home, '.cursor', 'mcp.json'), key: 'mcpServers' }],
|
|
533
|
+
},
|
|
534
|
+
];
|
|
535
|
+
for (const client of clients) {
|
|
536
|
+
let found = false;
|
|
537
|
+
let configExists = false;
|
|
538
|
+
let matchedFile = '';
|
|
539
|
+
for (const check of client.checks) {
|
|
540
|
+
try {
|
|
541
|
+
if (!existsSync(check.file))
|
|
542
|
+
continue;
|
|
543
|
+
configExists = true;
|
|
544
|
+
if (check.textSearch) {
|
|
545
|
+
// TOML or plain text — simple string search
|
|
546
|
+
const content = readFileSync(check.file, 'utf-8');
|
|
547
|
+
if (content.includes(check.textSearch)) {
|
|
548
|
+
found = true;
|
|
549
|
+
matchedFile = check.file;
|
|
550
|
+
break;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
// JSON config — parse and look for context-sync key
|
|
555
|
+
const content = readFileSync(check.file, 'utf-8');
|
|
556
|
+
const parsed = JSON.parse(content);
|
|
557
|
+
const servers = check.key ? parsed[check.key] : parsed;
|
|
558
|
+
if (servers && typeof servers === 'object' &&
|
|
559
|
+
('context-sync' in servers || 'mcp-context-sync' in servers)) {
|
|
560
|
+
found = true;
|
|
561
|
+
matchedFile = check.file;
|
|
562
|
+
break;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
catch {
|
|
567
|
+
// malformed config — skip
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
const padded = ` ${client.name}:`.padEnd(18);
|
|
571
|
+
if (found) {
|
|
572
|
+
const display = matchedFile.replace(home, '~').replace(/\\/g, '/');
|
|
573
|
+
console.log(`${padded}\u2713 ${display}`);
|
|
574
|
+
}
|
|
575
|
+
else if (configExists) {
|
|
576
|
+
console.log(`${padded}\u26A0 config exists but no context-sync entry`);
|
|
577
|
+
}
|
|
578
|
+
else {
|
|
579
|
+
console.log(`${padded}\u2717 not configured`);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
// 7. Projects synced
|
|
583
|
+
console.log('\nData:');
|
|
584
|
+
if (sqliteOk) {
|
|
585
|
+
try {
|
|
586
|
+
const db = getDatabase();
|
|
587
|
+
const projects = listProjects(db);
|
|
588
|
+
const totalSnapshots = projects.reduce((sum, p) => sum + p.snapshot_count, 0);
|
|
589
|
+
const totalHandoffs = projects.reduce((sum, p) => sum + p.handoff_count, 0);
|
|
590
|
+
console.log(` Projects: ${projects.length} | Snapshots: ${totalSnapshots} | Handoffs: ${totalHandoffs}`);
|
|
591
|
+
closeDatabase();
|
|
592
|
+
}
|
|
593
|
+
catch {
|
|
594
|
+
console.log(' (unable to read database)');
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
else {
|
|
598
|
+
console.log(' (unable to read database)');
|
|
599
|
+
}
|
|
600
|
+
// Issues summary
|
|
601
|
+
if (issues.length > 0) {
|
|
602
|
+
console.log('\nIssues found:');
|
|
603
|
+
for (const issue of issues) {
|
|
604
|
+
console.log(` ${issue}`);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
else {
|
|
608
|
+
console.log('\nNo issues found. Everything looks good!');
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
function readJsonFile(filePath) {
|
|
612
|
+
if (!existsSync(filePath))
|
|
613
|
+
return {};
|
|
614
|
+
const raw = readFileSync(filePath, 'utf-8');
|
|
615
|
+
return JSON.parse(stripBom(raw));
|
|
616
|
+
}
|
|
617
|
+
function ensureDir(dirPath) {
|
|
618
|
+
mkdirSync(dirPath, { recursive: true });
|
|
619
|
+
}
|
|
620
|
+
function hasMcpServer(obj, serverName) {
|
|
621
|
+
const servers = obj.mcpServers;
|
|
622
|
+
return !!servers && serverName in servers;
|
|
623
|
+
}
|
|
624
|
+
function installClaude() {
|
|
625
|
+
const configPath = join(homedir(), '.claude.json');
|
|
626
|
+
const label = 'Claude Code';
|
|
627
|
+
try {
|
|
628
|
+
const config = existsSync(configPath) ? readJsonFile(configPath) : {};
|
|
629
|
+
if (hasMcpServer(config, 'context-sync')) {
|
|
630
|
+
return { label, path: configPath, status: 'skipped' };
|
|
631
|
+
}
|
|
632
|
+
if (!config.mcpServers)
|
|
633
|
+
config.mcpServers = {};
|
|
634
|
+
config.mcpServers['context-sync'] = {
|
|
635
|
+
type: 'stdio',
|
|
636
|
+
command: 'mcp-context-sync',
|
|
637
|
+
args: [],
|
|
638
|
+
env: {},
|
|
639
|
+
};
|
|
640
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
641
|
+
return { label, path: configPath, status: 'configured' };
|
|
642
|
+
}
|
|
643
|
+
catch (err) {
|
|
644
|
+
return { label, path: configPath, status: 'error', message: String(err) };
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
function installCodex() {
|
|
648
|
+
const codexDir = join(homedir(), '.codex');
|
|
649
|
+
const mcpJsonPath = join(codexDir, 'mcp.json');
|
|
650
|
+
const configTomlPath = join(codexDir, 'config.toml');
|
|
651
|
+
const label = 'Codex';
|
|
652
|
+
try {
|
|
653
|
+
// Check mcp.json first
|
|
654
|
+
if (existsSync(mcpJsonPath)) {
|
|
655
|
+
const config = readJsonFile(mcpJsonPath);
|
|
656
|
+
if (hasMcpServer(config, 'context-sync')) {
|
|
657
|
+
return { label, path: mcpJsonPath, status: 'skipped' };
|
|
658
|
+
}
|
|
659
|
+
if (!config.mcpServers)
|
|
660
|
+
config.mcpServers = {};
|
|
661
|
+
config.mcpServers['context-sync'] = {
|
|
662
|
+
command: 'mcp-context-sync',
|
|
663
|
+
};
|
|
664
|
+
writeFileSync(mcpJsonPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
665
|
+
return { label, path: mcpJsonPath, status: 'configured' };
|
|
666
|
+
}
|
|
667
|
+
// Check config.toml
|
|
668
|
+
if (existsSync(configTomlPath)) {
|
|
669
|
+
const tomlContent = readFileSync(configTomlPath, 'utf-8');
|
|
670
|
+
if (tomlContent.includes('[mcp_servers.context-sync]')) {
|
|
671
|
+
return { label, path: configTomlPath, status: 'skipped' };
|
|
672
|
+
}
|
|
673
|
+
const appendBlock = '\n[mcp_servers.context-sync]\ncommand = "mcp-context-sync"\n';
|
|
674
|
+
writeFileSync(configTomlPath, tomlContent + appendBlock, 'utf-8');
|
|
675
|
+
return { label, path: configTomlPath, status: 'configured' };
|
|
676
|
+
}
|
|
677
|
+
// Neither exists — create mcp.json
|
|
678
|
+
ensureDir(codexDir);
|
|
679
|
+
const config = {
|
|
680
|
+
mcpServers: {
|
|
681
|
+
'context-sync': { command: 'mcp-context-sync' },
|
|
682
|
+
},
|
|
683
|
+
};
|
|
684
|
+
writeFileSync(mcpJsonPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
685
|
+
return { label, path: mcpJsonPath, status: 'configured' };
|
|
686
|
+
}
|
|
687
|
+
catch (err) {
|
|
688
|
+
return { label, path: mcpJsonPath, status: 'error', message: String(err) };
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
function installGemini() {
|
|
692
|
+
const configPath = join(homedir(), '.gemini', 'antigravity', 'mcp_config.json');
|
|
693
|
+
const label = 'Gemini';
|
|
694
|
+
try {
|
|
695
|
+
ensureDir(dirname(configPath));
|
|
696
|
+
const config = existsSync(configPath) ? readJsonFile(configPath) : {};
|
|
697
|
+
if (hasMcpServer(config, 'context-sync')) {
|
|
698
|
+
return { label, path: configPath, status: 'skipped' };
|
|
699
|
+
}
|
|
700
|
+
if (!config.mcpServers)
|
|
701
|
+
config.mcpServers = {};
|
|
702
|
+
config.mcpServers['context-sync'] = {
|
|
703
|
+
command: 'mcp-context-sync',
|
|
704
|
+
};
|
|
705
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
706
|
+
return { label, path: configPath, status: 'configured' };
|
|
707
|
+
}
|
|
708
|
+
catch (err) {
|
|
709
|
+
return { label, path: configPath, status: 'error', message: String(err) };
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
function installCursor() {
|
|
713
|
+
const configPath = join(homedir(), '.cursor', 'mcp.json');
|
|
714
|
+
const label = 'Cursor';
|
|
715
|
+
try {
|
|
716
|
+
ensureDir(dirname(configPath));
|
|
717
|
+
const config = existsSync(configPath) ? readJsonFile(configPath) : {};
|
|
718
|
+
if (hasMcpServer(config, 'context-sync')) {
|
|
719
|
+
return { label, path: configPath, status: 'skipped' };
|
|
720
|
+
}
|
|
721
|
+
if (!config.mcpServers)
|
|
722
|
+
config.mcpServers = {};
|
|
723
|
+
config.mcpServers['context-sync'] = {
|
|
724
|
+
type: 'stdio',
|
|
725
|
+
command: 'mcp-context-sync',
|
|
726
|
+
args: [],
|
|
727
|
+
env: {},
|
|
728
|
+
};
|
|
729
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
730
|
+
return { label, path: configPath, status: 'configured' };
|
|
731
|
+
}
|
|
732
|
+
catch (err) {
|
|
733
|
+
return { label, path: configPath, status: 'error', message: String(err) };
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
function cmdInstall() {
|
|
737
|
+
const wantClaude = argv.includes('--claude');
|
|
738
|
+
const wantCodex = argv.includes('--codex');
|
|
739
|
+
const wantGemini = argv.includes('--gemini');
|
|
740
|
+
const wantCursor = argv.includes('--cursor');
|
|
741
|
+
const wantAll = argv.includes('--all') || (!wantClaude && !wantCodex && !wantGemini && !wantCursor);
|
|
742
|
+
const results = [];
|
|
743
|
+
if (wantAll || wantClaude)
|
|
744
|
+
results.push(installClaude());
|
|
745
|
+
if (wantAll || wantCodex)
|
|
746
|
+
results.push(installCodex());
|
|
747
|
+
if (wantAll || wantGemini)
|
|
748
|
+
results.push(installGemini());
|
|
749
|
+
if (wantAll || wantCursor)
|
|
750
|
+
results.push(installCursor());
|
|
751
|
+
console.log('\ncontext-sync install\n');
|
|
752
|
+
const maxLabel = Math.max(...results.map((r) => r.label.length));
|
|
753
|
+
for (const r of results) {
|
|
754
|
+
const pad = r.label.padEnd(maxLabel);
|
|
755
|
+
if (r.status === 'configured') {
|
|
756
|
+
console.log(` ${pad}: \u2713 configured (${r.path})`);
|
|
757
|
+
}
|
|
758
|
+
else if (r.status === 'skipped') {
|
|
759
|
+
console.log(` ${pad}: \u00b7 already configured (skipped)`);
|
|
760
|
+
}
|
|
761
|
+
else {
|
|
762
|
+
console.log(` ${pad}: \u2717 error \u2014 ${r.message}`);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
console.log('\nDone! Restart your AI clients to activate.');
|
|
766
|
+
}
|
|
767
|
+
// ---------------------------------------------------------------------------
|
|
260
768
|
// Main
|
|
261
769
|
// ---------------------------------------------------------------------------
|
|
262
770
|
function showHelp() {
|
|
263
771
|
console.log(`context-sync — Cross-agent context synchronization CLI
|
|
264
772
|
|
|
265
773
|
Commands:
|
|
266
|
-
resume
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
774
|
+
resume Load latest snapshot [--project <path>] [--agent <name>]
|
|
775
|
+
--peek Read-only (no handoff registration)
|
|
776
|
+
--brief Compact 3-5 line summary (implies --peek)
|
|
777
|
+
--json Raw JSON output for piping (implies --peek)
|
|
778
|
+
sync Save work snapshot --file <path> | --json '<json>' | stdin
|
|
779
|
+
--interactive | -i Step-by-step guided snapshot creation
|
|
780
|
+
auto-sync Auto-save on session exit [--project <path>] [--agent <name>]
|
|
781
|
+
install Configure MCP in AI clients [--claude] [--codex] [--gemini] [--cursor] [--all]
|
|
782
|
+
No flags = --all (configure all clients)
|
|
783
|
+
list List synced projects
|
|
784
|
+
history Show handoff timeline [--project <path>] [--limit <n>]
|
|
785
|
+
doctor Diagnose installation and configuration issues
|
|
270
786
|
|
|
271
|
-
If --project is omitted, the
|
|
787
|
+
If --project is omitted, the git repository root is auto-detected.
|
|
788
|
+
Falls back to the current working directory when not inside a git repo.
|
|
272
789
|
|
|
273
790
|
Examples:
|
|
274
791
|
context-sync resume --project "C:/Users/me/myproject" --agent codex
|
|
792
|
+
context-sync resume --brief
|
|
793
|
+
context-sync resume --json | jq .summary
|
|
275
794
|
context-sync sync --file snapshot.json
|
|
795
|
+
context-sync sync --interactive --agent codex
|
|
796
|
+
context-sync auto-sync --agent claude-code
|
|
797
|
+
context-sync install
|
|
798
|
+
context-sync install --claude --codex
|
|
276
799
|
context-sync list`);
|
|
277
800
|
}
|
|
278
801
|
switch (argv[0]) {
|
|
@@ -282,12 +805,21 @@ switch (argv[0]) {
|
|
|
282
805
|
case 'sync':
|
|
283
806
|
cmdSync();
|
|
284
807
|
break;
|
|
808
|
+
case 'auto-sync':
|
|
809
|
+
cmdAutoSync();
|
|
810
|
+
break;
|
|
811
|
+
case 'install':
|
|
812
|
+
cmdInstall();
|
|
813
|
+
break;
|
|
285
814
|
case 'list':
|
|
286
815
|
cmdList();
|
|
287
816
|
break;
|
|
288
817
|
case 'history':
|
|
289
818
|
cmdHistory();
|
|
290
819
|
break;
|
|
820
|
+
case 'doctor':
|
|
821
|
+
cmdDoctor();
|
|
822
|
+
break;
|
|
291
823
|
case '--help':
|
|
292
824
|
case '-h':
|
|
293
825
|
showHelp();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { SnapshotRow } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Render a compact 3-5 line summary of a snapshot for quick consumption.
|
|
4
|
+
*/
|
|
5
|
+
export declare function renderSnapshotBrief(snapshot: SnapshotRow, displayName: string): string;
|
|
2
6
|
/**
|
|
3
7
|
* Render a snapshot row as readable Markdown for agent context windows.
|
|
4
8
|
*/
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render a compact 3-5 line summary of a snapshot for quick consumption.
|
|
3
|
+
*/
|
|
4
|
+
export function renderSnapshotBrief(snapshot, displayName) {
|
|
5
|
+
const tasksRemaining = JSON.parse(snapshot.tasks_remaining);
|
|
6
|
+
const blockers = JSON.parse(snapshot.blockers);
|
|
7
|
+
const date = snapshot.created_at.slice(0, 10);
|
|
8
|
+
const lines = [];
|
|
9
|
+
lines.push(`[${displayName}] Snapshot #${snapshot.sequence_number} by ${snapshot.agent} (${date})`);
|
|
10
|
+
lines.push(`Summary: ${snapshot.summary}`);
|
|
11
|
+
lines.push(`Remaining: ${tasksRemaining.length} task${tasksRemaining.length !== 1 ? 's' : ''} | Blockers: ${blockers.length > 0 ? blockers.join('; ') : 'none'}`);
|
|
12
|
+
lines.push(`Next: ${snapshot.next_steps}`);
|
|
13
|
+
return lines.join('\n');
|
|
14
|
+
}
|
|
1
15
|
/**
|
|
2
16
|
* Render a snapshot row as readable Markdown for agent context windows.
|
|
3
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-renderer.js","sourceRoot":"","sources":["../../src/lib/snapshot-renderer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot-renderer.js","sourceRoot":"","sources":["../../src/lib/snapshot-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-context-sync",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
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",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"dev": "tsx src/index.ts",
|
|
21
21
|
"cli": "tsx src/cli.ts",
|
|
22
22
|
"test": "vitest run",
|
|
23
|
-
"test:watch": "vitest"
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"release": "bash scripts/release.sh"
|
|
24
25
|
},
|
|
25
26
|
"keywords": [
|
|
26
27
|
"mcp",
|