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 CHANGED
@@ -1,38 +1,117 @@
1
1
  # mcp-context-sync
2
2
 
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.
3
+ Synchronize work context between AI coding agents. One agent saves progress, another picks up exactly where it left off.
4
4
 
5
- ## How it works
5
+ Supports: **Claude Code** · **Codex** · **Gemini CLI** · **Cursor**
6
6
 
7
- When you finish a work session, call `sync` to save a structured snapshot (summary, tasks, decisions, files modified, blockers, next steps). When you start a new session — even with a different agent — call `resume` to load the latest snapshot and continue where you left off.
7
+ ## Quick Start
8
8
 
9
- ```
10
- Claude Code ──sync──▶ SQLite ◀──resume── Codex
11
-
12
- └──resume── Gemini CLI
9
+ ### Install
10
+
11
+ ```bash
12
+ npm install -g mcp-context-sync
13
13
  ```
14
14
 
15
- ## Installation
15
+ ### Configure all AI clients
16
16
 
17
- Install globally from npm:
17
+ ```bash
18
+ context-sync install --all
19
+ ```
20
+
21
+ ### Verify
18
22
 
19
23
  ```bash
20
- npm i -g mcp-context-sync
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
- This provides two binaries:
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
- | Binary | Purpose |
26
- |--------|---------|
27
- | `mcp-context-sync` | MCP server (stdio transport) |
28
- | `context-sync` | CLI for agents that run shell commands |
77
+ #### Flags
29
78
 
30
- > **Note:** Use global install, not `npx`. Running via `npx` causes timeout issues with MCP health checks.
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
- ## MCP configuration
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 your `mcp_config.json`:
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
- ## MCP tools
147
+ ### Cursor
69
148
 
70
- | Tool | Description |
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
- ## MCP resources
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
- | 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 |
164
+ ## Storage
87
165
 
88
- ## CLI
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
- Fallback for agents that run shell commands instead of calling MCP tools directly.
171
+ ## Troubleshooting
91
172
 
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>]
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
- If `--project` is omitted, the current working directory is used automatically.
185
+ **Fix (alternative):** Install Visual Studio Build Tools:
100
186
 
101
- ### Flags
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
- | 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) |
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
- ### Examples
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 auto-detected)
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
- ## Storage
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
- ## Project identity
136
-
137
- Projects are identified by a SHA-256 hash of the normalized path (lowercase, forward slashes, no trailing slash). This means all agents resolve to the same project regardless of OS or path format — as long as they use the same absolute path to the project root.
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 { readFileSync } from 'node:fs';
13
- import { dirname } from 'node:path';
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
- * If --project is given, use it directly. Otherwise walk up from cwd.
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 peek = argv.includes('--peek');
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
- const agents = getProjectAgents(db, projectId);
134
- console.log(renderSnapshotMarkdown(snapshot, displayName, {
135
- totalSnapshots: project.snapshot_count,
136
- totalHandoffs: project.handoff_count + (peek ? 0 : 1),
137
- agents,
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
- function cmdSync() {
145
- const raw = readJsonInput();
146
- if (!raw.trim()) {
147
- console.error('Usage: context-sync sync --file <path.json>');
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: input.summary,
188
- tasks_completed: JSON.stringify(input.tasksCompleted),
189
- tasks_remaining: JSON.stringify(input.tasksRemaining),
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(input.filesModified ?? []),
192
- blockers: JSON.stringify(input.blockers ?? []),
193
- next_steps: input.nextSteps,
194
- tags: JSON.stringify(input.tags ?? []),
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
- closeDatabase();
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 Load latest snapshot [--project <path>] [--agent <name>]
267
- sync Save work snapshot --file <path> | --json '<json>' | stdin
268
- list List synced projects
269
- history Show handoff timeline [--project <path>] [--limit <n>]
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 current working directory is used.
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":"AAEA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAqB,EAAE,WAAmB;IAC5E,MAAM,cAAc,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,eAAe,QAAQ,CAAC,eAAe,OAAO,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC;IACpG,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CACR,cAAc,cAAc,CAAC,MAAM,QAAQ,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACtJ,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAqB,EACrB,WAAmB,EACnB,YAAkF;IAElF,MAAM,cAAc,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,cAAc,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,SAAS,GAAe,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAc,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CACR,kBAAkB,QAAQ,CAAC,eAAe,iBAAiB,QAAQ,CAAC,KAAK,gBAAgB,QAAQ,CAAC,UAAU,EAAE,CAC/G,CAAC;IACF,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,UAAU,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,cAAc;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,cAAc;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3D,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,IAAI,IAAI,cAAc,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACrD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,qBAAqB,YAAY,CAAC,cAAc,eAAe,YAAY,CAAC,aAAa,qBAAqB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACjJ,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-context-sync",
3
- "version": "1.0.6",
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",