mcp-context-sync 1.0.11 → 1.0.12
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/dist/cli.js +57 -49
- package/dist/cli.js.map +1 -1
- package/dist/db/connection.d.ts +10 -1
- package/dist/db/connection.js +59 -23
- package/dist/db/connection.js.map +1 -1
- package/dist/db/json-adapter.d.ts +47 -0
- package/dist/db/json-adapter.js +235 -0
- package/dist/db/json-adapter.js.map +1 -0
- package/dist/db/sqlite-adapter.d.ts +37 -0
- package/dist/db/sqlite-adapter.js +78 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/db/storage.d.ts +41 -0
- package/dist/db/storage.js +9 -0
- package/dist/db/storage.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/resources/project-decisions.d.ts +2 -2
- package/dist/resources/project-decisions.js +3 -4
- package/dist/resources/project-decisions.js.map +1 -1
- package/dist/resources/project-snapshot.d.ts +2 -2
- package/dist/resources/project-snapshot.js +3 -4
- package/dist/resources/project-snapshot.js.map +1 -1
- package/dist/resources/status.d.ts +2 -2
- package/dist/resources/status.js +1 -2
- package/dist/resources/status.js.map +1 -1
- package/dist/tools/amend-snapshot.d.ts +2 -2
- package/dist/tools/amend-snapshot.js +9 -10
- package/dist/tools/amend-snapshot.js.map +1 -1
- package/dist/tools/get-history.d.ts +2 -2
- package/dist/tools/get-history.js +3 -4
- package/dist/tools/get-history.js.map +1 -1
- package/dist/tools/list-projects.d.ts +2 -2
- package/dist/tools/list-projects.js +1 -2
- package/dist/tools/list-projects.js.map +1 -1
- package/dist/tools/log-decision.d.ts +2 -2
- package/dist/tools/log-decision.js +2 -3
- package/dist/tools/log-decision.js.map +1 -1
- package/dist/tools/resume.d.ts +2 -2
- package/dist/tools/resume.js +7 -8
- package/dist/tools/resume.js.map +1 -1
- package/dist/tools/search-snapshots.d.ts +2 -2
- package/dist/tools/search-snapshots.js +2 -3
- package/dist/tools/search-snapshots.js.map +1 -1
- package/dist/tools/sync.d.ts +2 -2
- package/dist/tools/sync.js +5 -6
- package/dist/tools/sync.js.map +1 -1
- package/package.json +4 -2
- package/scripts/postinstall.cjs +14 -34
- package/scripts/preinstall.cjs +13 -86
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { AmendSnapshotInputSchema } from '../lib/types.js';
|
|
2
2
|
import { projectIdFromPath, displayNameFromPath, } from '../lib/project-id.js';
|
|
3
|
-
import { getLatestSnapshot, updateSnapshot, insertDecision } from '../db/queries.js';
|
|
4
3
|
import { generateId } from '../lib/uuid.js';
|
|
5
4
|
export function registerAmendSnapshotTool(server, db) {
|
|
6
5
|
server.registerTool('amend-snapshot', {
|
|
@@ -17,7 +16,7 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
17
16
|
}, async (input) => {
|
|
18
17
|
const projectId = projectIdFromPath(input.projectDir);
|
|
19
18
|
const displayName = displayNameFromPath(input.projectDir);
|
|
20
|
-
const snapshot = getLatestSnapshot(
|
|
19
|
+
const snapshot = db.getLatestSnapshot(projectId);
|
|
21
20
|
if (!snapshot) {
|
|
22
21
|
return {
|
|
23
22
|
content: [
|
|
@@ -34,7 +33,7 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
34
33
|
if (input.addTasksCompleted?.length) {
|
|
35
34
|
const current = JSON.parse(snapshot.tasks_completed);
|
|
36
35
|
current.push(...input.addTasksCompleted);
|
|
37
|
-
updateSnapshot(
|
|
36
|
+
db.updateSnapshot(snapshot.id, {
|
|
38
37
|
tasks_completed: JSON.stringify(current),
|
|
39
38
|
});
|
|
40
39
|
changes.push(`Added ${input.addTasksCompleted.length} completed tasks`);
|
|
@@ -51,7 +50,7 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
51
50
|
changes.push(`Added ${input.addTasksRemaining.length} remaining tasks`);
|
|
52
51
|
}
|
|
53
52
|
if (input.removeTasksRemaining?.length || input.addTasksRemaining?.length) {
|
|
54
|
-
updateSnapshot(
|
|
53
|
+
db.updateSnapshot(snapshot.id, {
|
|
55
54
|
tasks_remaining: JSON.stringify(remaining),
|
|
56
55
|
});
|
|
57
56
|
}
|
|
@@ -59,11 +58,11 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
59
58
|
if (input.addDecisions?.length) {
|
|
60
59
|
const current = JSON.parse(snapshot.decisions);
|
|
61
60
|
current.push(...input.addDecisions);
|
|
62
|
-
updateSnapshot(
|
|
61
|
+
db.updateSnapshot(snapshot.id, {
|
|
63
62
|
decisions: JSON.stringify(current),
|
|
64
63
|
});
|
|
65
64
|
for (const d of input.addDecisions) {
|
|
66
|
-
insertDecision(
|
|
65
|
+
db.insertDecision({
|
|
67
66
|
id: generateId(),
|
|
68
67
|
project_id: projectId,
|
|
69
68
|
snapshot_id: snapshot.id,
|
|
@@ -80,7 +79,7 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
80
79
|
}
|
|
81
80
|
// Next steps
|
|
82
81
|
if (input.updateNextSteps) {
|
|
83
|
-
updateSnapshot(
|
|
82
|
+
db.updateSnapshot(snapshot.id, {
|
|
84
83
|
next_steps: input.updateNextSteps,
|
|
85
84
|
});
|
|
86
85
|
changes.push('Updated next steps');
|
|
@@ -97,7 +96,7 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
97
96
|
changes.push(`Added ${input.addBlockers.length} blockers`);
|
|
98
97
|
}
|
|
99
98
|
if (input.removeBlockers?.length || input.addBlockers?.length) {
|
|
100
|
-
updateSnapshot(
|
|
99
|
+
db.updateSnapshot(snapshot.id, {
|
|
101
100
|
blockers: JSON.stringify(blockers),
|
|
102
101
|
});
|
|
103
102
|
}
|
|
@@ -105,11 +104,11 @@ export function registerAmendSnapshotTool(server, db) {
|
|
|
105
104
|
if (input.addTags?.length) {
|
|
106
105
|
const current = JSON.parse(snapshot.tags);
|
|
107
106
|
const unique = [...new Set([...current, ...input.addTags])];
|
|
108
|
-
updateSnapshot(
|
|
107
|
+
db.updateSnapshot(snapshot.id, { tags: JSON.stringify(unique) });
|
|
109
108
|
changes.push(`Added ${input.addTags.length} tags`);
|
|
110
109
|
}
|
|
111
110
|
// Mark as amended
|
|
112
|
-
updateSnapshot(
|
|
111
|
+
db.updateSnapshot(snapshot.id, {
|
|
113
112
|
amended_at: now,
|
|
114
113
|
amended_by: input.agent,
|
|
115
114
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amend-snapshot.js","sourceRoot":"","sources":["../../src/tools/amend-snapshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAiB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"amend-snapshot.js","sourceRoot":"","sources":["../../src/tools/amend-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
3
|
-
export declare function registerGetHistoryTool(server: McpServer, db:
|
|
2
|
+
import type { StorageAdapter } from '../db/storage.js';
|
|
3
|
+
export declare function registerGetHistoryTool(server: McpServer, db: StorageAdapter): void;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { GetHistoryInputSchema } from '../lib/types.js';
|
|
2
2
|
import { projectIdFromPath, displayNameFromPath, } from '../lib/project-id.js';
|
|
3
|
-
import { getProject, getSnapshotsByProject, getHandoffsByProject, } from '../db/queries.js';
|
|
4
3
|
export function registerGetHistoryTool(server, db) {
|
|
5
4
|
server.registerTool('get-history', {
|
|
6
5
|
title: 'Get Project Handoff History',
|
|
@@ -15,7 +14,7 @@ export function registerGetHistoryTool(server, db) {
|
|
|
15
14
|
}, async (input) => {
|
|
16
15
|
const projectId = projectIdFromPath(input.projectDir);
|
|
17
16
|
const displayName = displayNameFromPath(input.projectDir);
|
|
18
|
-
const project = getProject(
|
|
17
|
+
const project = db.getProject(projectId);
|
|
19
18
|
if (!project) {
|
|
20
19
|
return {
|
|
21
20
|
content: [
|
|
@@ -26,11 +25,11 @@ export function registerGetHistoryTool(server, db) {
|
|
|
26
25
|
],
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
|
-
let snapshots = getSnapshotsByProject(
|
|
28
|
+
let snapshots = db.getSnapshotsByProject(projectId, input.limit);
|
|
30
29
|
if (input.agentFilter !== 'all') {
|
|
31
30
|
snapshots = snapshots.filter((s) => s.agent === input.agentFilter);
|
|
32
31
|
}
|
|
33
|
-
const handoffs = getHandoffsByProject(
|
|
32
|
+
const handoffs = db.getHandoffsByProject(projectId, 50);
|
|
34
33
|
const lines = [];
|
|
35
34
|
lines.push(`# Project Timeline: ${displayName}`);
|
|
36
35
|
lines.push(`Total: ${project.snapshot_count} snapshots, ${project.handoff_count} handoffs`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-history.js","sourceRoot":"","sources":["../../src/tools/get-history.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAiB,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-history.js","sourceRoot":"","sources":["../../src/tools/get-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
3
|
-
export declare function registerListProjectsTool(server: McpServer, db:
|
|
2
|
+
import type { StorageAdapter } from '../db/storage.js';
|
|
3
|
+
export declare function registerListProjectsTool(server: McpServer, db: StorageAdapter): void;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ListProjectsInputSchema } from '../lib/types.js';
|
|
2
|
-
import { listProjects } from '../db/queries.js';
|
|
3
2
|
export function registerListProjectsTool(server, db) {
|
|
4
3
|
server.registerTool('list-projects', {
|
|
5
4
|
title: 'List Synced Projects',
|
|
@@ -12,7 +11,7 @@ export function registerListProjectsTool(server, db) {
|
|
|
12
11
|
openWorldHint: false,
|
|
13
12
|
},
|
|
14
13
|
}, async () => {
|
|
15
|
-
const projects = listProjects(
|
|
14
|
+
const projects = db.listProjects();
|
|
16
15
|
if (projects.length === 0) {
|
|
17
16
|
return {
|
|
18
17
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,EAAkB;IAElB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,yEAAyE;QAC3E,WAAW,EAAE,uBAAuB;QACpC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;QAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sFAAsF;qBAC7F;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CACR,sBAAsB,CAAC,CAAC,cAAc,IAAI,OAAO,EAAE,CACpD,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7D,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
3
|
-
export declare function registerLogDecisionTool(server: McpServer, db:
|
|
2
|
+
import type { StorageAdapter } from '../db/storage.js';
|
|
3
|
+
export declare function registerLogDecisionTool(server: McpServer, db: StorageAdapter): void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { LogDecisionInputSchema } from '../lib/types.js';
|
|
2
2
|
import { projectIdFromPath, normalizePath, displayNameFromPath, } from '../lib/project-id.js';
|
|
3
3
|
import { generateId } from '../lib/uuid.js';
|
|
4
|
-
import { upsertProject, insertDecision } from '../db/queries.js';
|
|
5
4
|
export function registerLogDecisionTool(server, db) {
|
|
6
5
|
server.registerTool('log-decision', {
|
|
7
6
|
title: 'Log Decision',
|
|
@@ -20,8 +19,8 @@ export function registerLogDecisionTool(server, db) {
|
|
|
20
19
|
const displayName = displayNameFromPath(input.projectDir);
|
|
21
20
|
const now = new Date().toISOString();
|
|
22
21
|
const decisionId = generateId();
|
|
23
|
-
upsertProject(
|
|
24
|
-
insertDecision(
|
|
22
|
+
db.upsertProject(projectId, normalized, displayName);
|
|
23
|
+
db.insertDecision({
|
|
25
24
|
id: decisionId,
|
|
26
25
|
project_id: projectId,
|
|
27
26
|
snapshot_id: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-decision.js","sourceRoot":"","sources":["../../src/tools/log-decision.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"log-decision.js","sourceRoot":"","sources":["../../src/tools/log-decision.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,EAAkB;IAElB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,sEAAsE;YACtE,mGAAmG;QACrG,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAEhC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAErD,EAAE,CAAC,cAAc,CAAC;YAChB,EAAE,EAAE,UAAU;YACd,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;YACtD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YAChC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;YACvD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,wBAAwB,WAAW,WAAW,KAAK,CAAC,QAAQ,OAAO,KAAK,CAAC,SAAS,WAAW,UAAU,EAAE;iBAChH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/resume.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
3
|
-
export declare function registerResumeTool(server: McpServer, db:
|
|
2
|
+
import type { StorageAdapter } from '../db/storage.js';
|
|
3
|
+
export declare function registerResumeTool(server: McpServer, db: StorageAdapter): void;
|
package/dist/tools/resume.js
CHANGED
|
@@ -2,7 +2,6 @@ import { ResumeInputSchema } from '../lib/types.js';
|
|
|
2
2
|
import { projectIdFromPath, displayNameFromPath, normalizePath, } from '../lib/project-id.js';
|
|
3
3
|
import { generateId } from '../lib/uuid.js';
|
|
4
4
|
import { renderSnapshotMarkdown } from '../lib/snapshot-renderer.js';
|
|
5
|
-
import { getProject, getLatestSnapshot, getSnapshotById, insertHandoff, updateProjectSyncStats, getProjectAgents, listProjects, } from '../db/queries.js';
|
|
6
5
|
export function registerResumeTool(server, db) {
|
|
7
6
|
server.registerTool('resume', {
|
|
8
7
|
title: 'Resume from Context Snapshot',
|
|
@@ -18,13 +17,13 @@ export function registerResumeTool(server, db) {
|
|
|
18
17
|
}, async (input) => {
|
|
19
18
|
const projectId = projectIdFromPath(input.projectDir);
|
|
20
19
|
const displayName = displayNameFromPath(input.projectDir);
|
|
21
|
-
const project = getProject(
|
|
20
|
+
const project = db.getProject(projectId);
|
|
22
21
|
if (!project) {
|
|
23
22
|
return { content: [{ type: 'text', text: buildNotFoundMessage(db, input.projectDir, displayName, projectId) }] };
|
|
24
23
|
}
|
|
25
24
|
const snapshot = input.snapshotId
|
|
26
|
-
? getSnapshotById(
|
|
27
|
-
: getLatestSnapshot(
|
|
25
|
+
? db.getSnapshotById(input.snapshotId)
|
|
26
|
+
: db.getLatestSnapshot(projectId);
|
|
28
27
|
if (!snapshot) {
|
|
29
28
|
return {
|
|
30
29
|
content: [{
|
|
@@ -36,7 +35,7 @@ export function registerResumeTool(server, db) {
|
|
|
36
35
|
// Register the handoff in a transaction
|
|
37
36
|
const now = new Date().toISOString();
|
|
38
37
|
const agents = db.transaction(() => {
|
|
39
|
-
insertHandoff(
|
|
38
|
+
db.insertHandoff({
|
|
40
39
|
id: generateId(),
|
|
41
40
|
project_id: projectId,
|
|
42
41
|
snapshot_id: snapshot.id,
|
|
@@ -46,8 +45,8 @@ export function registerResumeTool(server, db) {
|
|
|
46
45
|
to_timestamp: now,
|
|
47
46
|
created_at: now,
|
|
48
47
|
});
|
|
49
|
-
updateProjectSyncStats(
|
|
50
|
-
return getProjectAgents(
|
|
48
|
+
db.updateProjectSyncStats(projectId);
|
|
49
|
+
return db.getProjectAgents(projectId);
|
|
51
50
|
})();
|
|
52
51
|
const markdown = renderSnapshotMarkdown(snapshot, displayName, {
|
|
53
52
|
totalSnapshots: project.snapshot_count,
|
|
@@ -62,7 +61,7 @@ export function registerResumeTool(server, db) {
|
|
|
62
61
|
// ---------------------------------------------------------------------------
|
|
63
62
|
function buildNotFoundMessage(db, inputPath, displayName, projectId) {
|
|
64
63
|
const normalized = normalizePath(inputPath);
|
|
65
|
-
const allProjects = listProjects(
|
|
64
|
+
const allProjects = db.listProjects();
|
|
66
65
|
const lines = [
|
|
67
66
|
`No context-sync data found for project "${displayName}"`,
|
|
68
67
|
'',
|
package/dist/tools/resume.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/tools/resume.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/tools/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
3
|
-
export declare function registerSearchSnapshotsTool(server: McpServer, db:
|
|
2
|
+
import type { StorageAdapter } from '../db/storage.js';
|
|
3
|
+
export declare function registerSearchSnapshotsTool(server: McpServer, db: StorageAdapter): void;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SearchSnapshotsInputSchema } from '../lib/types.js';
|
|
2
2
|
import { projectIdFromPath } from '../lib/project-id.js';
|
|
3
|
-
import { searchSnapshots, getSnapshotsByProject } from '../db/queries.js';
|
|
4
3
|
export function registerSearchSnapshotsTool(server, db) {
|
|
5
4
|
server.registerTool('search-snapshots', {
|
|
6
5
|
title: 'Search Snapshots',
|
|
@@ -18,11 +17,11 @@ export function registerSearchSnapshotsTool(server, db) {
|
|
|
18
17
|
: undefined;
|
|
19
18
|
let results;
|
|
20
19
|
if (input.query) {
|
|
21
|
-
results = searchSnapshots(
|
|
20
|
+
results = db.searchSnapshots(input.query, projectId, input.agent, input.since, input.until, input.limit);
|
|
22
21
|
}
|
|
23
22
|
else if (projectId) {
|
|
24
23
|
// No query text, just filter by project
|
|
25
|
-
results = getSnapshotsByProject(
|
|
24
|
+
results = db.getSnapshotsByProject(projectId, input.limit);
|
|
26
25
|
if (input.agent) {
|
|
27
26
|
results = results.filter((s) => s.agent === input.agent);
|
|
28
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-snapshots.js","sourceRoot":"","sources":["../../src/tools/search-snapshots.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-snapshots.js","sourceRoot":"","sources":["../../src/tools/search-snapshots.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,MAAM,UAAU,2BAA2B,CACzC,MAAiB,EACjB,EAAkB;IAElB,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,wEAAwE;QAC1E,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU;YAChC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,GAAG,EAAE,CAAC,eAAe,CAC1B,KAAK,CAAC,KAAK,EACX,SAAS,EACT,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,CACZ,CAAC;QACJ,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,wCAAwC;YACxC,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,KAAM,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,KAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,oFAAoF;qBAC3F;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,mDAAmD;qBAC1D;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,qBAAqB,OAAO,CAAC,MAAM,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CACR,iBAAiB,CAAC,CAAC,eAAe,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,UAAU,EAAE,CACtE,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7D,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/sync.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
3
|
-
export declare function registerSyncTool(server: McpServer, db:
|
|
2
|
+
import type { StorageAdapter } from '../db/storage.js';
|
|
3
|
+
export declare function registerSyncTool(server: McpServer, db: StorageAdapter): void;
|
package/dist/tools/sync.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { SyncInputSchema } from '../lib/types.js';
|
|
2
2
|
import { projectIdFromPath, normalizePath, displayNameFromPath, } from '../lib/project-id.js';
|
|
3
3
|
import { generateId } from '../lib/uuid.js';
|
|
4
|
-
import { upsertProject, getNextSequenceNumber, insertSnapshot, insertDecision, updateProjectSyncStats, } from '../db/queries.js';
|
|
5
4
|
import { validateProjectDir, suggestProjectRoot, formatWarnings, } from '../lib/validation.js';
|
|
6
5
|
export function registerSyncTool(server, db) {
|
|
7
6
|
server.registerTool('sync', {
|
|
@@ -23,8 +22,8 @@ export function registerSyncTool(server, db) {
|
|
|
23
22
|
const validation = validateProjectDir(input.projectDir);
|
|
24
23
|
const suggestedRoot = suggestProjectRoot(input.projectDir);
|
|
25
24
|
const txn = db.transaction(() => {
|
|
26
|
-
upsertProject(
|
|
27
|
-
const seqNum = getNextSequenceNumber(
|
|
25
|
+
db.upsertProject(projectId, normalized, displayName);
|
|
26
|
+
const seqNum = db.getNextSequenceNumber(projectId);
|
|
28
27
|
const snapshotId = generateId();
|
|
29
28
|
// Serialize all arrays once
|
|
30
29
|
const serialized = {
|
|
@@ -35,7 +34,7 @@ export function registerSyncTool(server, db) {
|
|
|
35
34
|
tasksCompleted: JSON.stringify(input.tasksCompleted),
|
|
36
35
|
tasksRemaining: JSON.stringify(input.tasksRemaining),
|
|
37
36
|
};
|
|
38
|
-
insertSnapshot(
|
|
37
|
+
db.insertSnapshot({
|
|
39
38
|
id: snapshotId,
|
|
40
39
|
project_id: projectId,
|
|
41
40
|
sequence_number: seqNum,
|
|
@@ -53,7 +52,7 @@ export function registerSyncTool(server, db) {
|
|
|
53
52
|
// Also insert decisions as first-class entities
|
|
54
53
|
if (input.decisions) {
|
|
55
54
|
for (const d of input.decisions) {
|
|
56
|
-
insertDecision(
|
|
55
|
+
db.insertDecision({
|
|
57
56
|
id: generateId(),
|
|
58
57
|
project_id: projectId,
|
|
59
58
|
snapshot_id: snapshotId,
|
|
@@ -67,7 +66,7 @@ export function registerSyncTool(server, db) {
|
|
|
67
66
|
});
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
|
-
updateProjectSyncStats(
|
|
69
|
+
db.updateProjectSyncStats(projectId);
|
|
71
70
|
return { snapshotId, seqNum };
|
|
72
71
|
});
|
|
73
72
|
const { snapshotId, seqNum } = txn();
|
package/dist/tools/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/tools/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/tools/sync.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.12",
|
|
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",
|
|
@@ -42,9 +42,11 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
45
|
-
"better-sqlite3": "^11.0.0",
|
|
46
45
|
"zod": "^3.24.0"
|
|
47
46
|
},
|
|
47
|
+
"optionalDependencies": {
|
|
48
|
+
"better-sqlite3": "^11.0.0"
|
|
49
|
+
},
|
|
48
50
|
"devDependencies": {
|
|
49
51
|
"@types/better-sqlite3": "^7.6.0",
|
|
50
52
|
"@types/node": "^22.0.0",
|
package/scripts/postinstall.cjs
CHANGED
|
@@ -2,53 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* postinstall check — verify better-sqlite3 loaded correctly.
|
|
5
|
-
* If not,
|
|
6
|
-
*
|
|
5
|
+
* If not, inform the user that JSON fallback will be used.
|
|
6
|
+
* The install succeeds either way (better-sqlite3 is optional).
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
try {
|
|
10
10
|
require('better-sqlite3');
|
|
11
|
+
console.log(' mcp-context-sync: SQLite storage ready (better-sqlite3 loaded)');
|
|
11
12
|
} catch (err) {
|
|
12
13
|
const nodeVersion = process.version;
|
|
13
14
|
const major = parseInt(nodeVersion.slice(1), 10);
|
|
14
15
|
const isWin = process.platform === 'win32';
|
|
15
16
|
|
|
16
|
-
console.
|
|
17
|
-
console.
|
|
18
|
-
console.
|
|
19
|
-
console.
|
|
20
|
-
console.error('');
|
|
17
|
+
console.warn('');
|
|
18
|
+
console.warn(' mcp-context-sync: better-sqlite3 not available — using JSON fallback storage');
|
|
19
|
+
console.warn(' Everything will work, but SQLite is faster and supports full-text search.');
|
|
20
|
+
console.warn('');
|
|
21
21
|
|
|
22
22
|
if (major >= 23 && isWin) {
|
|
23
|
-
console.
|
|
24
|
-
console.
|
|
25
|
-
console.error('');
|
|
26
|
-
console.error(' Recommended fix:');
|
|
27
|
-
console.error(' Use Node 20 or 22 LTS to install:');
|
|
28
|
-
console.error('');
|
|
29
|
-
console.error(' nvm install 22');
|
|
30
|
-
console.error(' nvm use 22');
|
|
31
|
-
console.error(' npm install -g mcp-context-sync');
|
|
32
|
-
console.error('');
|
|
33
|
-
console.error(' Alternative fix:');
|
|
34
|
-
console.error(' Install Visual Studio Build Tools with "Desktop development with C++"');
|
|
35
|
-
console.error(' https://visualstudio.microsoft.com/visual-cpp-build-tools/');
|
|
23
|
+
console.warn(` Reason: Node ${nodeVersion} on Windows lacks prebuilt binaries.`);
|
|
24
|
+
console.warn(' To enable SQLite: reinstall with Node 20 or 22 LTS.');
|
|
36
25
|
} else if (isWin) {
|
|
37
|
-
console.
|
|
38
|
-
console.
|
|
39
|
-
console.error(' Fix: Install Visual Studio Build Tools with "Desktop development with C++"');
|
|
40
|
-
console.error(' https://visualstudio.microsoft.com/visual-cpp-build-tools/');
|
|
41
|
-
console.error(' Then retry: npm install -g mcp-context-sync');
|
|
26
|
+
console.warn(' To enable SQLite: install Visual Studio Build Tools with "Desktop development with C++"');
|
|
27
|
+
console.warn(' https://visualstudio.microsoft.com/visual-cpp-build-tools/');
|
|
42
28
|
} else {
|
|
43
|
-
console.
|
|
44
|
-
console.error(' You may need build tools (gcc, make, python3) installed.');
|
|
45
|
-
console.error(' Or try Node 20-22 LTS which has prebuilt binaries.');
|
|
29
|
+
console.warn(' To enable SQLite: install build tools (gcc, make, python3) or use Node 20-22 LTS.');
|
|
46
30
|
}
|
|
47
31
|
|
|
48
|
-
console.
|
|
49
|
-
|
|
50
|
-
console.error('');
|
|
51
|
-
|
|
52
|
-
// Exit with error so npm shows the install failed clearly
|
|
53
|
-
process.exit(1);
|
|
32
|
+
console.warn('');
|
|
33
|
+
// Exit 0 — installation is successful with JSON fallback
|
|
54
34
|
}
|