@vheins/local-memory-mcp 0.4.7 → 0.4.10

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 (168) hide show
  1. package/dist/capabilities.d.ts +7 -7
  2. package/dist/capabilities.d.ts.map +1 -1
  3. package/dist/capabilities.js +7 -7
  4. package/dist/capabilities.js.map +1 -1
  5. package/dist/completion.d.ts +25 -0
  6. package/dist/completion.d.ts.map +1 -0
  7. package/dist/completion.js +127 -0
  8. package/dist/completion.js.map +1 -0
  9. package/dist/mcp/client.d.ts.map +1 -1
  10. package/dist/mcp/client.js +8 -1
  11. package/dist/mcp/client.js.map +1 -1
  12. package/dist/mcp/elicitation.d.ts +24 -0
  13. package/dist/mcp/elicitation.d.ts.map +1 -0
  14. package/dist/mcp/elicitation.js +13 -0
  15. package/dist/mcp/elicitation.js.map +1 -0
  16. package/dist/mcp/sampling.d.ts +69 -0
  17. package/dist/mcp/sampling.d.ts.map +1 -0
  18. package/dist/mcp/sampling.js +13 -0
  19. package/dist/mcp/sampling.js.map +1 -0
  20. package/dist/mcp/session.d.ts +28 -0
  21. package/dist/mcp/session.d.ts.map +1 -0
  22. package/dist/mcp/session.js +106 -0
  23. package/dist/mcp/session.js.map +1 -0
  24. package/dist/prompts/registry.d.ts +55 -0
  25. package/dist/prompts/registry.d.ts.map +1 -1
  26. package/dist/prompts/registry.js +455 -7
  27. package/dist/prompts/registry.js.map +1 -1
  28. package/dist/resources/index.d.ts +55 -4
  29. package/dist/resources/index.d.ts.map +1 -1
  30. package/dist/resources/index.js +223 -52
  31. package/dist/resources/index.js.map +1 -1
  32. package/dist/router.d.ts +11 -1
  33. package/dist/router.d.ts.map +1 -1
  34. package/dist/router.js +151 -34
  35. package/dist/router.js.map +1 -1
  36. package/dist/server.js +212 -13
  37. package/dist/server.js.map +1 -1
  38. package/dist/storage/sqlite.d.ts +2 -0
  39. package/dist/storage/sqlite.d.ts.map +1 -1
  40. package/dist/storage/sqlite.js +81 -23
  41. package/dist/storage/sqlite.js.map +1 -1
  42. package/dist/tasks.bulk.test.js +43 -6
  43. package/dist/tasks.bulk.test.js.map +1 -1
  44. package/dist/tasks.e2e.test.js +30 -6
  45. package/dist/tasks.e2e.test.js.map +1 -1
  46. package/dist/tests/client.test.d.ts +2 -0
  47. package/dist/tests/client.test.d.ts.map +1 -0
  48. package/dist/tests/client.test.js +130 -0
  49. package/dist/tests/client.test.js.map +1 -0
  50. package/dist/tests/dashboard.test.d.ts +2 -0
  51. package/dist/tests/dashboard.test.d.ts.map +1 -0
  52. package/dist/tests/dashboard.test.js +370 -0
  53. package/dist/tests/dashboard.test.js.map +1 -0
  54. package/dist/tests/e2e.test.d.ts +2 -0
  55. package/dist/tests/e2e.test.d.ts.map +1 -0
  56. package/dist/tests/e2e.test.js +250 -0
  57. package/dist/tests/e2e.test.js.map +1 -0
  58. package/dist/tests/index.test.d.ts +2 -0
  59. package/dist/tests/index.test.d.ts.map +1 -0
  60. package/dist/tests/index.test.js +185 -0
  61. package/dist/tests/index.test.js.map +1 -0
  62. package/dist/tests/logger.test.d.ts +2 -0
  63. package/dist/tests/logger.test.d.ts.map +1 -0
  64. package/dist/tests/logger.test.js +104 -0
  65. package/dist/tests/logger.test.js.map +1 -0
  66. package/dist/tests/memory.bulk.test.d.ts +2 -0
  67. package/dist/tests/memory.bulk.test.d.ts.map +1 -0
  68. package/dist/tests/memory.bulk.test.js +52 -0
  69. package/dist/tests/memory.bulk.test.js.map +1 -0
  70. package/dist/tests/memory.search.test.d.ts +2 -0
  71. package/dist/tests/memory.search.test.d.ts.map +1 -0
  72. package/dist/tests/memory.search.test.js +181 -0
  73. package/dist/tests/memory.search.test.js.map +1 -0
  74. package/dist/tests/normalize.test.d.ts +2 -0
  75. package/dist/tests/normalize.test.d.ts.map +1 -0
  76. package/dist/tests/normalize.test.js +159 -0
  77. package/dist/tests/normalize.test.js.map +1 -0
  78. package/dist/tests/query-expander.test.d.ts +2 -0
  79. package/dist/tests/query-expander.test.d.ts.map +1 -0
  80. package/dist/tests/query-expander.test.js +33 -0
  81. package/dist/tests/query-expander.test.js.map +1 -0
  82. package/dist/tests/router.test.d.ts +2 -0
  83. package/dist/tests/router.test.d.ts.map +1 -0
  84. package/dist/tests/router.test.js +470 -0
  85. package/dist/tests/router.test.js.map +1 -0
  86. package/dist/tests/sqlite.test.d.ts +2 -0
  87. package/dist/tests/sqlite.test.d.ts.map +1 -0
  88. package/dist/tests/sqlite.test.js +367 -0
  89. package/dist/tests/sqlite.test.js.map +1 -0
  90. package/dist/tests/tasks-search.test.d.ts +2 -0
  91. package/dist/tests/tasks-search.test.d.ts.map +1 -0
  92. package/dist/tests/tasks-search.test.js +154 -0
  93. package/dist/tests/tasks-search.test.js.map +1 -0
  94. package/dist/tests/tasks-transition.test.d.ts +2 -0
  95. package/dist/tests/tasks-transition.test.d.ts.map +1 -0
  96. package/dist/tests/tasks-transition.test.js +174 -0
  97. package/dist/tests/tasks-transition.test.js.map +1 -0
  98. package/dist/tests/tasks.bulk.test.d.ts +2 -0
  99. package/dist/tests/tasks.bulk.test.d.ts.map +1 -0
  100. package/dist/tests/tasks.bulk.test.js +254 -0
  101. package/dist/tests/tasks.bulk.test.js.map +1 -0
  102. package/dist/tests/tasks.e2e.test.d.ts +2 -0
  103. package/dist/tests/tasks.e2e.test.d.ts.map +1 -0
  104. package/dist/tests/tasks.e2e.test.js +289 -0
  105. package/dist/tests/tasks.e2e.test.js.map +1 -0
  106. package/dist/tests/tasks.pending-limit-refined.test.d.ts +2 -0
  107. package/dist/tests/tasks.pending-limit-refined.test.d.ts.map +1 -0
  108. package/dist/tests/tasks.pending-limit-refined.test.js +72 -0
  109. package/dist/tests/tasks.pending-limit-refined.test.js.map +1 -0
  110. package/dist/tests/v2-features.test.d.ts +2 -0
  111. package/dist/tests/v2-features.test.d.ts.map +1 -0
  112. package/dist/tests/v2-features.test.js +209 -0
  113. package/dist/tests/v2-features.test.js.map +1 -0
  114. package/dist/tools/memory.bulk-delete.d.ts +1 -7
  115. package/dist/tools/memory.bulk-delete.d.ts.map +1 -1
  116. package/dist/tools/memory.bulk-delete.js +30 -8
  117. package/dist/tools/memory.bulk-delete.js.map +1 -1
  118. package/dist/tools/memory.delete.d.ts.map +1 -1
  119. package/dist/tools/memory.delete.js +18 -1
  120. package/dist/tools/memory.delete.js.map +1 -1
  121. package/dist/tools/memory.recap.d.ts.map +1 -1
  122. package/dist/tools/memory.recap.js +24 -1
  123. package/dist/tools/memory.recap.js.map +1 -1
  124. package/dist/tools/memory.search.d.ts.map +1 -1
  125. package/dist/tools/memory.search.js +16 -1
  126. package/dist/tools/memory.search.js.map +1 -1
  127. package/dist/tools/memory.store.d.ts.map +1 -1
  128. package/dist/tools/memory.store.js +31 -1
  129. package/dist/tools/memory.store.js.map +1 -1
  130. package/dist/tools/memory.summarize.d.ts.map +1 -1
  131. package/dist/tools/memory.summarize.js +19 -1
  132. package/dist/tools/memory.summarize.js.map +1 -1
  133. package/dist/tools/memory.synthesize.d.ts +14 -0
  134. package/dist/tools/memory.synthesize.d.ts.map +1 -0
  135. package/dist/tools/memory.synthesize.js +227 -0
  136. package/dist/tools/memory.synthesize.js.map +1 -0
  137. package/dist/tools/memory.update.d.ts.map +1 -1
  138. package/dist/tools/memory.update.js +19 -1
  139. package/dist/tools/memory.update.js.map +1 -1
  140. package/dist/tools/schemas.d.ts +1735 -248
  141. package/dist/tools/schemas.d.ts.map +1 -1
  142. package/dist/tools/schemas.js +471 -4
  143. package/dist/tools/schemas.js.map +1 -1
  144. package/dist/tools/task.bulk-manage.d.ts +1 -7
  145. package/dist/tools/task.bulk-manage.d.ts.map +1 -1
  146. package/dist/tools/task.bulk-manage.js +60 -15
  147. package/dist/tools/task.bulk-manage.js.map +1 -1
  148. package/dist/tools/task.manage.d.ts +12 -28
  149. package/dist/tools/task.manage.d.ts.map +1 -1
  150. package/dist/tools/task.manage.js +198 -31
  151. package/dist/tools/task.manage.js.map +1 -1
  152. package/dist/utils/completion.d.ts +2 -0
  153. package/dist/utils/completion.d.ts.map +1 -0
  154. package/dist/utils/completion.js +28 -0
  155. package/dist/utils/completion.js.map +1 -0
  156. package/dist/utils/logger.d.ts +18 -0
  157. package/dist/utils/logger.d.ts.map +1 -1
  158. package/dist/utils/logger.js +101 -29
  159. package/dist/utils/logger.js.map +1 -1
  160. package/dist/utils/mcp-response.d.ts +50 -0
  161. package/dist/utils/mcp-response.d.ts.map +1 -1
  162. package/dist/utils/mcp-response.js +54 -7
  163. package/dist/utils/mcp-response.js.map +1 -1
  164. package/dist/utils/pagination.d.ts +6 -0
  165. package/dist/utils/pagination.d.ts.map +1 -0
  166. package/dist/utils/pagination.js +32 -0
  167. package/dist/utils/pagination.js.map +1 -0
  168. package/package.json +2 -1
@@ -1,17 +1,68 @@
1
1
  import { SQLiteStore } from "../storage/sqlite.js";
2
- export declare function listResources(): {
3
- resources: {
2
+ import { SessionContext } from "../mcp/session.js";
3
+ export declare function listResources(session?: SessionContext, params?: {
4
+ cursor?: string;
5
+ limit?: number;
6
+ }): {
7
+ [x: string]: string | ({
4
8
  uri: string;
5
9
  name: string;
10
+ title: string;
6
11
  description: string;
7
12
  mimeType: string;
8
- }[];
13
+ annotations: {
14
+ audience: string[];
15
+ priority: number;
16
+ lastModified: string;
17
+ };
18
+ size?: undefined;
19
+ } | {
20
+ uri: string;
21
+ name: string;
22
+ title: string;
23
+ description: string;
24
+ mimeType: string;
25
+ size: number;
26
+ annotations: {
27
+ audience: string[];
28
+ priority: number;
29
+ lastModified: string;
30
+ };
31
+ })[] | undefined;
32
+ nextCursor: string | undefined;
33
+ };
34
+ export declare function listResourceTemplates(params?: {
35
+ cursor?: string;
36
+ limit?: number;
37
+ }): {
38
+ [x: string]: string | {
39
+ uriTemplate: string;
40
+ name: string;
41
+ title: string;
42
+ description: string;
43
+ mimeType: string;
44
+ annotations: {
45
+ audience: string[];
46
+ priority: number;
47
+ };
48
+ }[] | undefined;
49
+ nextCursor: string | undefined;
9
50
  };
10
- export declare function readResource(uri: string, db: SQLiteStore): {
51
+ export declare function completeResourceArgument(resourceUri: string, argumentName: string, argumentValue: string, _contextArguments: Record<string, unknown>, dataSources: {
52
+ repos: string[];
53
+ tags: string[];
54
+ }): string[];
55
+ export declare function readResource(uri: string, db: SQLiteStore, session?: SessionContext): {
11
56
  contents: {
12
57
  uri: string;
13
58
  mimeType: string;
14
59
  text: any;
60
+ size: number;
61
+ annotations: {
62
+ audience: string[];
63
+ priority: number;
64
+ lastModified: any;
65
+ };
15
66
  }[];
16
67
  };
17
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,wBAAgB,aAAa;;;;;;;EAyC5B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW;;;;;;EA4HxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQnD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CnG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;EA4DjF;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,WAAW,EAAE;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,YAqBF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;EAsLlF"}
@@ -1,61 +1,169 @@
1
1
  import { logger } from "../utils/logger.js";
2
- export function listResources() {
3
- return {
4
- resources: [
5
- {
6
- uri: "memory://index",
7
- name: "Active Memory Index",
8
- description: "List of all active memory entries across projects",
9
- mimeType: "application/json"
2
+ import { rankCompletionValues } from "../utils/completion.js";
3
+ import { decodeCursor, encodeCursor } from "../utils/pagination.js";
4
+ const DEFAULT_PAGE_SIZE = 25;
5
+ const MAX_PAGE_SIZE = 100;
6
+ export function listResources(session, params) {
7
+ const resources = [
8
+ {
9
+ uri: "memory://index",
10
+ name: "Active Memory Index",
11
+ title: "Active Memory Index",
12
+ description: "List of all active memory entries across projects",
13
+ mimeType: "application/json",
14
+ annotations: {
15
+ audience: ["assistant"],
16
+ priority: 0.85,
17
+ lastModified: new Date().toISOString(),
10
18
  },
11
- {
12
- uri: "memory://index?repo={repo}",
13
- name: "Project Memory Index",
14
- description: "Metadata for all active memories in a specific project",
15
- mimeType: "application/json"
19
+ },
20
+ {
21
+ uri: "memory://{id}",
22
+ name: "Memory Detail",
23
+ title: "Memory Detail",
24
+ description: "Full content and statistics for a specific memory UUID",
25
+ mimeType: "application/json",
26
+ annotations: {
27
+ audience: ["assistant"],
28
+ priority: 0.7,
29
+ lastModified: new Date().toISOString(),
16
30
  },
17
- {
18
- uri: "memory://tags/{tag}",
19
- name: "Memories by Tech Stack",
20
- description: "Retrieve best practices and decisions by technology tag (e.g., filament, react)",
21
- mimeType: "application/json"
31
+ },
32
+ {
33
+ uri: "session://roots",
34
+ name: "Session Roots",
35
+ title: "Session Roots",
36
+ description: session?.roots.length
37
+ ? "Active workspace roots provided by the MCP client"
38
+ : "No active workspace roots were provided by the MCP client",
39
+ mimeType: "application/json",
40
+ size: Buffer.byteLength(JSON.stringify({ roots: session?.roots ?? [] }), "utf8"),
41
+ annotations: {
42
+ audience: ["assistant"],
43
+ priority: 1,
44
+ lastModified: new Date().toISOString(),
22
45
  },
23
- {
24
- uri: "memory://summary/{repo}",
25
- name: "Project Summary",
26
- description: "High-level summary of architectural decisions for a repository",
27
- mimeType: "text/plain"
46
+ }
47
+ ];
48
+ return paginateEntries("resources", resources, params);
49
+ }
50
+ export function listResourceTemplates(params) {
51
+ const templates = [
52
+ {
53
+ uriTemplate: "memory://index?repo={repo}",
54
+ name: "Project Memory Index",
55
+ title: "Project Memory Index",
56
+ description: "Metadata for all active memories in a specific project",
57
+ mimeType: "application/json",
58
+ annotations: {
59
+ audience: ["assistant"],
60
+ priority: 0.7,
28
61
  },
29
- {
30
- uri: "memory://{id}",
31
- name: "Memory Detail",
32
- description: "Full content and statistics for a specific memory UUID",
33
- mimeType: "application/json"
62
+ },
63
+ {
64
+ uriTemplate: "memory://tags/{tag}",
65
+ name: "Memories by Tech Stack",
66
+ title: "Memories by Tech Stack",
67
+ description: "Retrieve best practices and decisions by technology tag (e.g., filament, react)",
68
+ mimeType: "application/json",
69
+ annotations: {
70
+ audience: ["assistant"],
71
+ priority: 0.55,
34
72
  },
35
- {
36
- uri: "tasks://current?repo={repo}",
37
- name: "Current Tasks",
38
- description: "List of all active tasks (pending, in_progress, blocked) for a specific project",
39
- mimeType: "application/json"
40
- }
41
- ]
42
- };
73
+ },
74
+ {
75
+ uriTemplate: "memory://summary/{repo}",
76
+ name: "Project Summary",
77
+ title: "Project Summary",
78
+ description: "High-level summary of architectural decisions for a repository",
79
+ mimeType: "text/plain",
80
+ annotations: {
81
+ audience: ["assistant"],
82
+ priority: 0.95,
83
+ },
84
+ },
85
+ {
86
+ uriTemplate: "tasks://current?repo={repo}",
87
+ name: "Current Tasks",
88
+ title: "Current Tasks",
89
+ description: "List of all active tasks (pending, in_progress, blocked) for a specific project",
90
+ mimeType: "application/json",
91
+ annotations: {
92
+ audience: ["assistant"],
93
+ priority: 0.9,
94
+ },
95
+ },
96
+ {
97
+ uriTemplate: "memory://search/{base64_query}?repo={repo}",
98
+ name: "Semantic Memory Search",
99
+ title: "Semantic Memory Search",
100
+ description: "Run a semantic search over memories using a base64-encoded query",
101
+ mimeType: "application/json",
102
+ annotations: {
103
+ audience: ["assistant"],
104
+ priority: 0.6,
105
+ },
106
+ }
107
+ ];
108
+ return paginateEntries("resourceTemplates", templates, params);
43
109
  }
44
- export function readResource(uri, db) {
110
+ export function completeResourceArgument(resourceUri, argumentName, argumentValue, _contextArguments, dataSources) {
111
+ if (resourceUri === "memory://index?repo={repo}"
112
+ || resourceUri === "memory://summary/{repo}"
113
+ || resourceUri === "tasks://current?repo={repo}") {
114
+ if (argumentName !== "repo") {
115
+ throw invalidCompletionParams(`Unknown resource argument "${argumentName}" for "${resourceUri}"`);
116
+ }
117
+ return rankCompletionValues(dataSources.repos, argumentValue);
118
+ }
119
+ if (resourceUri === "memory://tags/{tag}") {
120
+ if (argumentName !== "tag") {
121
+ throw invalidCompletionParams(`Unknown resource argument "${argumentName}" for "${resourceUri}"`);
122
+ }
123
+ return rankCompletionValues(dataSources.tags, argumentValue);
124
+ }
125
+ throw invalidCompletionParams(`Unknown resource template: ${resourceUri}`);
126
+ }
127
+ export function readResource(uri, db, session) {
45
128
  logger.info("[MCP] resource.read", { uri });
129
+ if (uri === "session://roots") {
130
+ const payload = JSON.stringify({ roots: session?.roots ?? [] }, null, 2);
131
+ return {
132
+ contents: [
133
+ {
134
+ uri,
135
+ mimeType: "application/json",
136
+ text: payload,
137
+ size: Buffer.byteLength(payload, "utf8"),
138
+ annotations: {
139
+ audience: ["assistant"],
140
+ priority: 1,
141
+ lastModified: new Date().toISOString(),
142
+ },
143
+ }
144
+ ]
145
+ };
146
+ }
46
147
  // 6. Current Tasks: tasks://current?repo={repo}
47
148
  if (uri.startsWith("tasks://current?")) {
48
149
  const parsed = new URL(uri.replace("tasks://", "http://tasks/"));
49
150
  const repo = parsed.searchParams.get("repo");
50
151
  if (!repo)
51
- throw new Error("Repo parameter is required for tasks://current");
52
- const tasks = db.getTasksByRepo(repo).filter(t => ["pending", "in_progress", "blocked"].includes(t.status));
152
+ throw resourceNotFound("Repo parameter is required for tasks://current", uri);
153
+ const tasks = db.getTasksByRepo(repo).filter(t => ["backlog", "pending", "in_progress", "blocked"].includes(t.status));
154
+ const payload = JSON.stringify(tasks, null, 2);
53
155
  return {
54
156
  contents: [
55
157
  {
56
158
  uri,
57
159
  mimeType: "application/json",
58
- text: JSON.stringify(tasks, null, 2)
160
+ text: payload,
161
+ size: Buffer.byteLength(payload, "utf8"),
162
+ annotations: {
163
+ audience: ["assistant"],
164
+ priority: 0.9,
165
+ lastModified: deriveLastModifiedFromCollection(tasks.map((task) => task.updated_at)),
166
+ },
59
167
  }
60
168
  ]
61
169
  };
@@ -67,13 +175,20 @@ export function readResource(uri, db) {
67
175
  const includeArchived = parsed.searchParams.get("archived") === "true";
68
176
  const entries = repo
69
177
  ? db.searchByRepo(repo, { limit: 50, includeArchived })
70
- : db.listRecent(50); // Fallback to global recent
178
+ : db.listRecent(50);
179
+ const payload = JSON.stringify(entries, null, 2);
71
180
  return {
72
181
  contents: [
73
182
  {
74
183
  uri,
75
184
  mimeType: "application/json",
76
- text: JSON.stringify(entries, null, 2)
185
+ text: payload,
186
+ size: Buffer.byteLength(payload, "utf8"),
187
+ annotations: {
188
+ audience: ["assistant"],
189
+ priority: repo ? 0.85 : 0.7,
190
+ lastModified: deriveLastModifiedFromCollection(entries.map((entry) => entry.updated_at || entry.created_at)),
191
+ },
77
192
  }
78
193
  ]
79
194
  };
@@ -81,18 +196,24 @@ export function readResource(uri, db) {
81
196
  // 2. Tag Affinity Resource: memory://tags/{tag}
82
197
  if (uri.startsWith("memory://tags/")) {
83
198
  const tag = uri.replace("memory://tags/", "");
84
- // Search across all repos for this specific technology tag
85
199
  const entries = db.searchByRepo("", {
86
200
  tags: [tag],
87
201
  limit: 50,
88
202
  includeArchived: false
89
203
  });
204
+ const payload = JSON.stringify({ tag, count: entries.length, entries }, null, 2);
90
205
  return {
91
206
  contents: [
92
207
  {
93
208
  uri,
94
209
  mimeType: "application/json",
95
- text: JSON.stringify({ tag, count: entries.length, entries }, null, 2)
210
+ text: payload,
211
+ size: Buffer.byteLength(payload, "utf8"),
212
+ annotations: {
213
+ audience: ["assistant"],
214
+ priority: 0.55,
215
+ lastModified: deriveLastModifiedFromCollection(entries.map((entry) => entry.updated_at || entry.created_at)),
216
+ },
96
217
  }
97
218
  ]
98
219
  };
@@ -101,35 +222,47 @@ export function readResource(uri, db) {
101
222
  if (uri.startsWith("memory://summary/")) {
102
223
  const repo = uri.replace("memory://summary/", "");
103
224
  const summary = db.getSummary(repo);
225
+ const text = summary?.summary || `No summary available for repository: ${repo}`;
104
226
  return {
105
227
  contents: [
106
228
  {
107
229
  uri,
108
230
  mimeType: "text/plain",
109
- text: summary?.summary || `No summary available for repository: ${repo}`
231
+ text,
232
+ size: Buffer.byteLength(text, "utf8"),
233
+ annotations: {
234
+ audience: ["assistant"],
235
+ priority: 0.95,
236
+ lastModified: summary?.updated_at || new Date().toISOString(),
237
+ },
110
238
  }
111
239
  ]
112
240
  };
113
241
  }
114
- // 4. View memory by ID: memory://{uuid}
115
242
  const idMatch = uri.match(/^memory:\/\/([0-9a-f-]{36})$/i);
116
243
  if (idMatch) {
117
244
  const id = idMatch[1];
118
- const entry = db.getByIdWithStats(id); // Use version with stats for full detail
245
+ const entry = db.getByIdWithStats(id);
119
246
  if (!entry) {
120
- throw new Error(`Memory with ID ${id} not found.`);
247
+ throw resourceNotFound(`Memory with ID ${id} not found.`, uri);
121
248
  }
249
+ const payload = JSON.stringify(entry, null, 2);
122
250
  return {
123
251
  contents: [
124
252
  {
125
253
  uri,
126
254
  mimeType: "application/json",
127
- text: JSON.stringify(entry, null, 2)
255
+ text: payload,
256
+ size: Buffer.byteLength(payload, "utf8"),
257
+ annotations: {
258
+ audience: ["assistant"],
259
+ priority: 0.75,
260
+ lastModified: entry.updated_at || entry.created_at,
261
+ },
128
262
  }
129
263
  ]
130
264
  };
131
265
  }
132
- // 5. Semantic Search via URI: memory://search/{base64_query}?repo={repo}
133
266
  if (uri.startsWith("memory://search/")) {
134
267
  const parts = uri.replace("memory://search/", "").split('?');
135
268
  const encodedQuery = parts[0];
@@ -137,16 +270,54 @@ export function readResource(uri, db) {
137
270
  const parsed = new URL("http://memory/" + (parts[1] || ""));
138
271
  const repo = parsed.searchParams.get("repo") || "";
139
272
  const results = db.searchBySimilarity(query, repo, 10);
273
+ const payload = JSON.stringify({ query, repo, results }, null, 2);
140
274
  return {
141
275
  contents: [
142
276
  {
143
277
  uri,
144
278
  mimeType: "application/json",
145
- text: JSON.stringify({ query, repo, results }, null, 2)
279
+ text: payload,
280
+ size: Buffer.byteLength(payload, "utf8"),
281
+ annotations: {
282
+ audience: ["assistant"],
283
+ priority: 0.65,
284
+ lastModified: deriveLastModifiedFromCollection(results.map((entry) => entry.updated_at || entry.created_at)),
285
+ },
146
286
  }
147
287
  ]
148
288
  };
149
289
  }
150
- throw new Error(`Unknown resource URI: ${uri}`);
290
+ throw resourceNotFound(`Unknown resource URI: ${uri}`, uri);
291
+ }
292
+ function paginateEntries(key, entries, params) {
293
+ const limit = normalizeLimit(params?.limit);
294
+ const offset = decodeCursor(params?.cursor);
295
+ const sliced = entries.slice(offset, offset + limit);
296
+ const nextOffset = offset + sliced.length;
297
+ return {
298
+ [key]: sliced,
299
+ nextCursor: nextOffset < entries.length ? encodeCursor(nextOffset) : undefined,
300
+ };
301
+ }
302
+ function normalizeLimit(limit) {
303
+ if (typeof limit !== "number" || !Number.isFinite(limit)) {
304
+ return DEFAULT_PAGE_SIZE;
305
+ }
306
+ return Math.min(MAX_PAGE_SIZE, Math.max(1, Math.trunc(limit)));
307
+ }
308
+ function deriveLastModifiedFromCollection(values) {
309
+ const normalized = values.filter((value) => typeof value === "string" && value.length > 0);
310
+ return normalized.sort().at(-1) ?? new Date().toISOString();
311
+ }
312
+ function resourceNotFound(message, uri) {
313
+ const error = new Error(message);
314
+ error.code = -32002;
315
+ error.data = { uri };
316
+ return error;
317
+ }
318
+ function invalidCompletionParams(message) {
319
+ const error = new Error(message);
320
+ error.code = -32602;
321
+ return error;
151
322
  }
152
323
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,4 +1,14 @@
1
+ import { SessionContext } from "./mcp/session.js";
1
2
  import { SQLiteStore } from "./storage/sqlite.js";
2
3
  import { VectorStore } from "./types.js";
3
- export declare function createRouter(db: SQLiteStore, vectors: VectorStore): (method: string, params: any) => Promise<any>;
4
+ import { SamplingRequestHandler } from "./mcp/sampling.js";
5
+ import { ElicitationRequestHandler } from "./mcp/elicitation.js";
6
+ type RouterOptions = {
7
+ getSessionContext?: () => SessionContext;
8
+ sampleMessage?: SamplingRequestHandler;
9
+ elicit?: ElicitationRequestHandler;
10
+ onResourcesMutated?: (uris: string[]) => void;
11
+ };
12
+ export declare function createRouter(db: SQLiteStore, vectors: VectorStore, options?: RouterOptions): (method: string, params: any, signal?: AbortSignal, onProgress?: (progress: number, total?: number) => void) => Promise<any>;
13
+ export {};
4
14
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAYzC,wBAAgB,YAAY,CAC1B,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,WAAW,GACnB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAyI/C"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAA+D,MAAM,kBAAkB,CAAC;AAK/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAkBzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,KAAK,aAAa,GAAG;IACnB,iBAAiB,CAAC,EAAE,MAAM,cAAc,CAAC;IACzC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,wBAAgB,YAAY,CAC1B,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAkK9H"}