mcp-context-sync 1.0.11 → 1.0.13

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.
Files changed (49) hide show
  1. package/dist/cli.js +253 -49
  2. package/dist/cli.js.map +1 -1
  3. package/dist/db/connection.d.ts +10 -1
  4. package/dist/db/connection.js +59 -23
  5. package/dist/db/connection.js.map +1 -1
  6. package/dist/db/json-adapter.d.ts +47 -0
  7. package/dist/db/json-adapter.js +235 -0
  8. package/dist/db/json-adapter.js.map +1 -0
  9. package/dist/db/sqlite-adapter.d.ts +37 -0
  10. package/dist/db/sqlite-adapter.js +78 -0
  11. package/dist/db/sqlite-adapter.js.map +1 -0
  12. package/dist/db/storage.d.ts +41 -0
  13. package/dist/db/storage.js +9 -0
  14. package/dist/db/storage.js.map +1 -0
  15. package/dist/index.js +4 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/resources/project-decisions.d.ts +2 -2
  18. package/dist/resources/project-decisions.js +3 -4
  19. package/dist/resources/project-decisions.js.map +1 -1
  20. package/dist/resources/project-snapshot.d.ts +2 -2
  21. package/dist/resources/project-snapshot.js +3 -4
  22. package/dist/resources/project-snapshot.js.map +1 -1
  23. package/dist/resources/status.d.ts +2 -2
  24. package/dist/resources/status.js +1 -2
  25. package/dist/resources/status.js.map +1 -1
  26. package/dist/tools/amend-snapshot.d.ts +2 -2
  27. package/dist/tools/amend-snapshot.js +9 -10
  28. package/dist/tools/amend-snapshot.js.map +1 -1
  29. package/dist/tools/get-history.d.ts +2 -2
  30. package/dist/tools/get-history.js +3 -4
  31. package/dist/tools/get-history.js.map +1 -1
  32. package/dist/tools/list-projects.d.ts +2 -2
  33. package/dist/tools/list-projects.js +1 -2
  34. package/dist/tools/list-projects.js.map +1 -1
  35. package/dist/tools/log-decision.d.ts +2 -2
  36. package/dist/tools/log-decision.js +2 -3
  37. package/dist/tools/log-decision.js.map +1 -1
  38. package/dist/tools/resume.d.ts +2 -2
  39. package/dist/tools/resume.js +7 -8
  40. package/dist/tools/resume.js.map +1 -1
  41. package/dist/tools/search-snapshots.d.ts +2 -2
  42. package/dist/tools/search-snapshots.js +2 -3
  43. package/dist/tools/search-snapshots.js.map +1 -1
  44. package/dist/tools/sync.d.ts +2 -2
  45. package/dist/tools/sync.js +5 -6
  46. package/dist/tools/sync.js.map +1 -1
  47. package/package.json +4 -2
  48. package/scripts/postinstall.cjs +14 -34
  49. package/scripts/preinstall.cjs +13 -86
@@ -0,0 +1,78 @@
1
+ /**
2
+ * SqliteAdapter — StorageAdapter backed by better-sqlite3.
3
+ *
4
+ * Every method delegates to the corresponding function in queries.ts,
5
+ * passing the internal Database instance as the first argument.
6
+ */
7
+ import { upsertProject, getProject, listProjects, updateProjectSyncStats, getNextSequenceNumber, insertSnapshot, getLatestSnapshot, getSnapshotById, getSnapshotsByProject, updateSnapshot, searchSnapshots, insertDecision, getDecisionsByProject, insertHandoff, getHandoffsByProject, getProjectAgents, getTotalCounts, } from './queries.js';
8
+ export class SqliteAdapter {
9
+ backend = 'sqlite';
10
+ db;
11
+ constructor(db) {
12
+ this.db = db;
13
+ }
14
+ // ─── Projects ──────────────────────────────────────────────────
15
+ upsertProject(id, normalizedPath, displayName) {
16
+ return upsertProject(this.db, id, normalizedPath, displayName);
17
+ }
18
+ getProject(id) {
19
+ return getProject(this.db, id);
20
+ }
21
+ listProjects() {
22
+ return listProjects(this.db);
23
+ }
24
+ updateProjectSyncStats(projectId) {
25
+ updateProjectSyncStats(this.db, projectId);
26
+ }
27
+ // ─── Snapshots ─────────────────────────────────────────────────
28
+ getNextSequenceNumber(projectId) {
29
+ return getNextSequenceNumber(this.db, projectId);
30
+ }
31
+ insertSnapshot(snapshot) {
32
+ insertSnapshot(this.db, snapshot);
33
+ }
34
+ getLatestSnapshot(projectId) {
35
+ return getLatestSnapshot(this.db, projectId);
36
+ }
37
+ getSnapshotById(snapshotId) {
38
+ return getSnapshotById(this.db, snapshotId);
39
+ }
40
+ getSnapshotsByProject(projectId, limit) {
41
+ return getSnapshotsByProject(this.db, projectId, limit);
42
+ }
43
+ updateSnapshot(snapshotId, fields) {
44
+ updateSnapshot(this.db, snapshotId, fields);
45
+ }
46
+ searchSnapshots(query, projectId, agent, since, until, limit = 20) {
47
+ return searchSnapshots(this.db, query, projectId, agent, since, until, limit);
48
+ }
49
+ // ─── Decisions ─────────────────────────────────────────────────
50
+ insertDecision(row) {
51
+ insertDecision(this.db, row);
52
+ }
53
+ getDecisionsByProject(projectId, limit = 50) {
54
+ return getDecisionsByProject(this.db, projectId, limit);
55
+ }
56
+ // ─── Handoffs ──────────────────────────────────────────────────
57
+ insertHandoff(row) {
58
+ insertHandoff(this.db, row);
59
+ }
60
+ getHandoffsByProject(projectId, limit = 20) {
61
+ return getHandoffsByProject(this.db, projectId, limit);
62
+ }
63
+ // ─── Stats ─────────────────────────────────────────────────────
64
+ getProjectAgents(projectId) {
65
+ return getProjectAgents(this.db, projectId);
66
+ }
67
+ getTotalCounts() {
68
+ return getTotalCounts(this.db);
69
+ }
70
+ // ─── Lifecycle ─────────────────────────────────────────────────
71
+ transaction(fn) {
72
+ return this.db.transaction(fn);
73
+ }
74
+ close() {
75
+ this.db.close();
76
+ }
77
+ }
78
+ //# sourceMappingURL=sqlite-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/db/sqlite-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * StorageAdapter — backend-agnostic interface for context-sync persistence.
3
+ *
4
+ * Every method mirrors an exported function from queries.ts but without the
5
+ * leading `db` parameter. Implementations: SqliteAdapter (better-sqlite3)
6
+ * and JsonAdapter (plain JSON files).
7
+ */
8
+ export type { ProjectRow, SnapshotRow, DecisionRow, HandoffRow, } from '../lib/types.js';
9
+ import type { ProjectRow, SnapshotRow, DecisionRow, HandoffRow } from '../lib/types.js';
10
+ export interface StorageAdapter {
11
+ /** Identifies the backing store for doctor/diagnostics. */
12
+ readonly backend: 'sqlite' | 'json';
13
+ upsertProject(id: string, normalizedPath: string, displayName: string): ProjectRow;
14
+ getProject(id: string): ProjectRow | undefined;
15
+ listProjects(): ProjectRow[];
16
+ updateProjectSyncStats(projectId: string): void;
17
+ getNextSequenceNumber(projectId: string): number;
18
+ insertSnapshot(snapshot: Omit<SnapshotRow, 'amended_at' | 'amended_by'>): void;
19
+ getLatestSnapshot(projectId: string): SnapshotRow | undefined;
20
+ getSnapshotById(snapshotId: string): SnapshotRow | undefined;
21
+ getSnapshotsByProject(projectId: string, limit: number): SnapshotRow[];
22
+ updateSnapshot(snapshotId: string, fields: Partial<Pick<SnapshotRow, 'tasks_completed' | 'tasks_remaining' | 'decisions' | 'next_steps' | 'blockers' | 'tags' | 'amended_at' | 'amended_by'>>): void;
23
+ searchSnapshots(query: string, projectId?: string, agent?: string, since?: string, until?: string, limit?: number): SnapshotRow[];
24
+ insertDecision(row: DecisionRow): void;
25
+ getDecisionsByProject(projectId: string, limit?: number): DecisionRow[];
26
+ insertHandoff(row: HandoffRow): void;
27
+ getHandoffsByProject(projectId: string, limit?: number): HandoffRow[];
28
+ getProjectAgents(projectId: string): string[];
29
+ getTotalCounts(): {
30
+ projects: number;
31
+ snapshots: number;
32
+ handoffs: number;
33
+ };
34
+ /**
35
+ * Returns a callable that, when invoked, executes `fn` inside a
36
+ * transaction (matching better-sqlite3's `db.transaction(fn)` pattern).
37
+ */
38
+ transaction<T>(fn: () => T): () => T;
39
+ /** Release any resources held by the adapter. */
40
+ close(): void;
41
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * StorageAdapter — backend-agnostic interface for context-sync persistence.
3
+ *
4
+ * Every method mirrors an exported function from queries.ts but without the
5
+ * leading `db` parameter. Implementations: SqliteAdapter (better-sqlite3)
6
+ * and JsonAdapter (plain JSON files).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/db/storage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
- import { getDatabase, closeDatabase } from './db/connection.js';
4
+ import { getStorage, closeStorage } from './db/connection.js';
5
5
  import { registerSyncTool } from './tools/sync.js';
6
6
  import { registerResumeTool } from './tools/resume.js';
7
7
  import { registerLogDecisionTool } from './tools/log-decision.js';
@@ -13,7 +13,7 @@ import { registerStatusResource } from './resources/status.js';
13
13
  import { registerProjectSnapshotResource } from './resources/project-snapshot.js';
14
14
  import { registerProjectDecisionsResource } from './resources/project-decisions.js';
15
15
  async function main() {
16
- const db = getDatabase();
16
+ const db = getStorage();
17
17
  const server = new McpServer({
18
18
  name: 'context-sync',
19
19
  version: '1.0.0',
@@ -35,11 +35,11 @@ async function main() {
35
35
  await server.connect(transport);
36
36
  // Cleanup on exit
37
37
  process.on('SIGINT', () => {
38
- closeDatabase();
38
+ closeStorage();
39
39
  process.exit(0);
40
40
  });
41
41
  process.on('SIGTERM', () => {
42
- closeDatabase();
42
+ closeStorage();
43
43
  process.exit(0);
44
44
  });
45
45
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEpF,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,QAAQ;IACR,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtC,YAAY;IACZ,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,+BAA+B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,gCAAgC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE7C,oBAAoB;IACpB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEpF,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,QAAQ;IACR,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,2BAA2B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtC,YAAY;IACZ,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,+BAA+B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,gCAAgC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE7C,oBAAoB;IACpB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type Database from 'better-sqlite3';
3
- export declare function registerProjectDecisionsResource(server: McpServer, db: Database.Database): void;
2
+ import type { StorageAdapter } from '../db/storage.js';
3
+ export declare function registerProjectDecisionsResource(server: McpServer, db: StorageAdapter): void;
@@ -1,9 +1,8 @@
1
1
  import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { listProjects, getDecisionsByProject } from '../db/queries.js';
3
2
  export function registerProjectDecisionsResource(server, db) {
4
3
  server.registerResource('project-decisions', new ResourceTemplate('context-sync://project/{projectId}/decisions', {
5
4
  list: async () => {
6
- const projects = listProjects(db);
5
+ const projects = db.listProjects();
7
6
  return {
8
7
  resources: projects.map((p) => ({
9
8
  uri: `context-sync://project/${p.id}/decisions`,
@@ -19,7 +18,7 @@ export function registerProjectDecisionsResource(server, db) {
19
18
  mimeType: 'text/markdown',
20
19
  }, async (uri, { projectId }) => {
21
20
  const pid = projectId;
22
- const decisions = getDecisionsByProject(db, pid);
21
+ const decisions = db.getDecisionsByProject(pid);
23
22
  if (decisions.length === 0) {
24
23
  return {
25
24
  contents: [
@@ -31,7 +30,7 @@ export function registerProjectDecisionsResource(server, db) {
31
30
  ],
32
31
  };
33
32
  }
34
- const projects = listProjects(db);
33
+ const projects = db.listProjects();
35
34
  const project = projects.find((p) => p.id === pid);
36
35
  const displayName = project?.display_name ?? pid;
37
36
  const lines = [
@@ -1 +1 @@
1
- {"version":3,"file":"project-decisions.js","sourceRoot":"","sources":["../../src/resources/project-decisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-decisions.js","sourceRoot":"","sources":["../../src/resources/project-decisions.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 Database from 'better-sqlite3';
3
- export declare function registerProjectSnapshotResource(server: McpServer, db: Database.Database): void;
2
+ import type { StorageAdapter } from '../db/storage.js';
3
+ export declare function registerProjectSnapshotResource(server: McpServer, db: StorageAdapter): void;
@@ -1,10 +1,9 @@
1
1
  import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { listProjects, getLatestSnapshot, } from '../db/queries.js';
3
2
  import { renderSnapshotMarkdown } from '../lib/snapshot-renderer.js';
4
3
  export function registerProjectSnapshotResource(server, db) {
5
4
  server.registerResource('project-snapshot', new ResourceTemplate('context-sync://project/{projectId}/latest', {
6
5
  list: async () => {
7
- const projects = listProjects(db);
6
+ const projects = db.listProjects();
8
7
  return {
9
8
  resources: projects.map((p) => ({
10
9
  uri: `context-sync://project/${p.id}/latest`,
@@ -20,7 +19,7 @@ export function registerProjectSnapshotResource(server, db) {
20
19
  mimeType: 'text/markdown',
21
20
  }, async (uri, { projectId }) => {
22
21
  const pid = projectId;
23
- const snapshot = getLatestSnapshot(db, pid);
22
+ const snapshot = db.getLatestSnapshot(pid);
24
23
  if (!snapshot) {
25
24
  return {
26
25
  contents: [
@@ -32,7 +31,7 @@ export function registerProjectSnapshotResource(server, db) {
32
31
  ],
33
32
  };
34
33
  }
35
- const projects = listProjects(db);
34
+ const projects = db.listProjects();
36
35
  const project = projects.find((p) => p.id === pid);
37
36
  const displayName = project?.display_name ?? pid;
38
37
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"project-snapshot.js","sourceRoot":"","sources":["../../src/resources/project-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,yCAAyC,CAAC;AAE3F,OAAO,EACL,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,UAAU,+BAA+B,CAC7C,MAAiB,EACjB,EAAqB;IAErB,MAAM,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,IAAI,gBAAgB,CAAC,2CAA2C,EAAE;QAChE,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAClC,OAAO;gBACL,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,GAAG,EAAE,0BAA0B,CAAC,CAAC,EAAE,SAAS;oBAC5C,IAAI,EAAE,GAAG,CAAC,CAAC,YAAY,oBAAoB;oBAC3C,WAAW,EAAE,oCAAoC,CAAC,CAAC,YAAY,EAAE;oBACjE,QAAQ,EAAE,eAAwB;iBACnC,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KACF,CAAC,EACF;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,eAAe;KAC1B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,SAAmB,CAAC;QAChC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,GAAG,CAAC,IAAI;wBACb,QAAQ,EAAE,YAAY;wBACtB,IAAI,EAAE,sCAAsC;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;QAEjD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,QAAQ,EAAE,eAAe;oBACzB,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC;iBACpD;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"project-snapshot.js","sourceRoot":"","sources":["../../src/resources/project-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,yCAAyC,CAAC;AAE3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,UAAU,+BAA+B,CAC7C,MAAiB,EACjB,EAAkB;IAElB,MAAM,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,IAAI,gBAAgB,CAAC,2CAA2C,EAAE;QAChE,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YACnC,OAAO;gBACL,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,GAAG,EAAE,0BAA0B,CAAC,CAAC,EAAE,SAAS;oBAC5C,IAAI,EAAE,GAAG,CAAC,CAAC,YAAY,oBAAoB;oBAC3C,WAAW,EAAE,oCAAoC,CAAC,CAAC,YAAY,EAAE;oBACjE,QAAQ,EAAE,eAAwB;iBACnC,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KACF,CAAC,EACF;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,eAAe;KAC1B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,SAAmB,CAAC;QAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,GAAG,CAAC,IAAI;wBACb,QAAQ,EAAE,YAAY;wBACtB,IAAI,EAAE,sCAAsC;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;QAEjD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,QAAQ,EAAE,eAAe;oBACzB,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC;iBACpD;aACF;SACF,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 Database from 'better-sqlite3';
3
- export declare function registerStatusResource(server: McpServer, db: Database.Database): void;
2
+ import type { StorageAdapter } from '../db/storage.js';
3
+ export declare function registerStatusResource(server: McpServer, db: StorageAdapter): void;
@@ -1,11 +1,10 @@
1
- import { getTotalCounts } from '../db/queries.js';
2
1
  export function registerStatusResource(server, db) {
3
2
  server.registerResource('server-status', 'context-sync://status', {
4
3
  title: 'Context Sync Server Status',
5
4
  description: 'Server version, total projects, snapshots, and handoffs',
6
5
  mimeType: 'application/json',
7
6
  }, async (uri) => {
8
- const counts = getTotalCounts(db);
7
+ const counts = db.getTotalCounts();
9
8
  return {
10
9
  contents: [
11
10
  {
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/resources/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,EAAqB;IAErB,MAAM,CAAC,gBAAgB,CACrB,eAAe,EACf,uBAAuB,EACvB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,OAAO,EAAE,OAAO;wBAChB,aAAa,EAAE,MAAM,CAAC,QAAQ;wBAC9B,cAAc,EAAE,MAAM,CAAC,SAAS;wBAChC,aAAa,EAAE,MAAM,CAAC,QAAQ;qBAC/B,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/resources/status.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,EAAkB;IAElB,MAAM,CAAC,gBAAgB,CACrB,eAAe,EACf,uBAAuB,EACvB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,OAAO,EAAE,OAAO;wBAChB,aAAa,EAAE,MAAM,CAAC,QAAQ;wBAC9B,cAAc,EAAE,MAAM,CAAC,SAAS;wBAChC,aAAa,EAAE,MAAM,CAAC,QAAQ;qBAC/B,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,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 Database from 'better-sqlite3';
3
- export declare function registerAmendSnapshotTool(server: McpServer, db: Database.Database): void;
2
+ import type { StorageAdapter } from '../db/storage.js';
3
+ export declare function registerAmendSnapshotTool(server: McpServer, db: StorageAdapter): void;
@@ -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(db, projectId);
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(db, snapshot.id, {
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(db, snapshot.id, {
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(db, snapshot.id, {
61
+ db.updateSnapshot(snapshot.id, {
63
62
  decisions: JSON.stringify(current),
64
63
  });
65
64
  for (const d of input.addDecisions) {
66
- insertDecision(db, {
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(db, snapshot.id, {
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(db, snapshot.id, {
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(db, snapshot.id, { tags: JSON.stringify(unique) });
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(db, snapshot.id, {
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":"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"}
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 Database from 'better-sqlite3';
3
- export declare function registerGetHistoryTool(server: McpServer, db: Database.Database): void;
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(db, projectId);
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(db, projectId, input.limit);
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(db, projectId, 50);
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":"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"}
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 Database from 'better-sqlite3';
3
- export declare function registerListProjectsTool(server: McpServer, db: Database.Database): void;
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(db);
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;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,EAAqB;IAErB,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,YAAY,CAAC,EAAE,CAAC,CAAC;QAElC,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
+ {"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 Database from 'better-sqlite3';
3
- export declare function registerLogDecisionTool(server: McpServer, db: Database.Database): void;
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(db, projectId, normalized, displayName);
24
- insertDecision(db, {
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;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,EAAqB;IAErB,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,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAEtD,cAAc,CAAC,EAAE,EAAE;YACjB,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"}
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"}
@@ -1,3 +1,3 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type Database from 'better-sqlite3';
3
- export declare function registerResumeTool(server: McpServer, db: Database.Database): void;
2
+ import type { StorageAdapter } from '../db/storage.js';
3
+ export declare function registerResumeTool(server: McpServer, db: StorageAdapter): void;
@@ -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(db, projectId);
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(db, input.snapshotId)
27
- : getLatestSnapshot(db, projectId);
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(db, {
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(db, projectId);
50
- return getProjectAgents(db, projectId);
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(db);
64
+ const allProjects = db.listProjects();
66
65
  const lines = [
67
66
  `No context-sync data found for project "${displayName}"`,
68
67
  '',