@vheins/local-memory-mcp 0.4.8 → 0.4.11

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 (164) 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 +222 -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/tests/client.test.d.ts +2 -0
  39. package/dist/tests/client.test.d.ts.map +1 -0
  40. package/dist/tests/client.test.js +130 -0
  41. package/dist/tests/client.test.js.map +1 -0
  42. package/dist/tests/dashboard.test.d.ts +2 -0
  43. package/dist/tests/dashboard.test.d.ts.map +1 -0
  44. package/dist/tests/dashboard.test.js +370 -0
  45. package/dist/tests/dashboard.test.js.map +1 -0
  46. package/dist/tests/e2e.test.d.ts +2 -0
  47. package/dist/tests/e2e.test.d.ts.map +1 -0
  48. package/dist/tests/e2e.test.js +250 -0
  49. package/dist/tests/e2e.test.js.map +1 -0
  50. package/dist/tests/index.test.d.ts +2 -0
  51. package/dist/tests/index.test.d.ts.map +1 -0
  52. package/dist/tests/index.test.js +185 -0
  53. package/dist/tests/index.test.js.map +1 -0
  54. package/dist/tests/logger.test.d.ts +2 -0
  55. package/dist/tests/logger.test.d.ts.map +1 -0
  56. package/dist/tests/logger.test.js +104 -0
  57. package/dist/tests/logger.test.js.map +1 -0
  58. package/dist/tests/memory.bulk.test.d.ts +2 -0
  59. package/dist/tests/memory.bulk.test.d.ts.map +1 -0
  60. package/dist/tests/memory.bulk.test.js +52 -0
  61. package/dist/tests/memory.bulk.test.js.map +1 -0
  62. package/dist/tests/memory.search.test.d.ts +2 -0
  63. package/dist/tests/memory.search.test.d.ts.map +1 -0
  64. package/dist/tests/memory.search.test.js +181 -0
  65. package/dist/tests/memory.search.test.js.map +1 -0
  66. package/dist/tests/normalize.test.d.ts +2 -0
  67. package/dist/tests/normalize.test.d.ts.map +1 -0
  68. package/dist/tests/normalize.test.js +181 -0
  69. package/dist/tests/normalize.test.js.map +1 -0
  70. package/dist/tests/query-expander.test.d.ts +2 -0
  71. package/dist/tests/query-expander.test.d.ts.map +1 -0
  72. package/dist/tests/query-expander.test.js +33 -0
  73. package/dist/tests/query-expander.test.js.map +1 -0
  74. package/dist/tests/router.test.d.ts +2 -0
  75. package/dist/tests/router.test.d.ts.map +1 -0
  76. package/dist/tests/router.test.js +470 -0
  77. package/dist/tests/router.test.js.map +1 -0
  78. package/dist/tests/sqlite.test.d.ts +2 -0
  79. package/dist/tests/sqlite.test.d.ts.map +1 -0
  80. package/dist/tests/sqlite.test.js +367 -0
  81. package/dist/tests/sqlite.test.js.map +1 -0
  82. package/dist/tests/tasks-search.test.d.ts +2 -0
  83. package/dist/tests/tasks-search.test.d.ts.map +1 -0
  84. package/dist/tests/tasks-search.test.js +154 -0
  85. package/dist/tests/tasks-search.test.js.map +1 -0
  86. package/dist/tests/tasks-transition.test.d.ts +2 -0
  87. package/dist/tests/tasks-transition.test.d.ts.map +1 -0
  88. package/dist/tests/tasks-transition.test.js +174 -0
  89. package/dist/tests/tasks-transition.test.js.map +1 -0
  90. package/dist/tests/tasks.bulk.test.d.ts +2 -0
  91. package/dist/tests/tasks.bulk.test.d.ts.map +1 -0
  92. package/dist/tests/tasks.bulk.test.js +254 -0
  93. package/dist/tests/tasks.bulk.test.js.map +1 -0
  94. package/dist/tests/tasks.e2e.test.d.ts +2 -0
  95. package/dist/tests/tasks.e2e.test.d.ts.map +1 -0
  96. package/dist/tests/tasks.e2e.test.js +289 -0
  97. package/dist/tests/tasks.e2e.test.js.map +1 -0
  98. package/dist/tests/tasks.pending-limit-refined.test.d.ts +2 -0
  99. package/dist/tests/tasks.pending-limit-refined.test.d.ts.map +1 -0
  100. package/dist/tests/tasks.pending-limit-refined.test.js +72 -0
  101. package/dist/tests/tasks.pending-limit-refined.test.js.map +1 -0
  102. package/dist/tests/v2-features.test.d.ts +2 -0
  103. package/dist/tests/v2-features.test.d.ts.map +1 -0
  104. package/dist/tests/v2-features.test.js +209 -0
  105. package/dist/tests/v2-features.test.js.map +1 -0
  106. package/dist/tools/memory.bulk-delete.d.ts +1 -7
  107. package/dist/tools/memory.bulk-delete.d.ts.map +1 -1
  108. package/dist/tools/memory.bulk-delete.js +30 -8
  109. package/dist/tools/memory.bulk-delete.js.map +1 -1
  110. package/dist/tools/memory.delete.d.ts.map +1 -1
  111. package/dist/tools/memory.delete.js +18 -1
  112. package/dist/tools/memory.delete.js.map +1 -1
  113. package/dist/tools/memory.recap.d.ts.map +1 -1
  114. package/dist/tools/memory.recap.js +24 -1
  115. package/dist/tools/memory.recap.js.map +1 -1
  116. package/dist/tools/memory.search.d.ts.map +1 -1
  117. package/dist/tools/memory.search.js +16 -1
  118. package/dist/tools/memory.search.js.map +1 -1
  119. package/dist/tools/memory.store.d.ts.map +1 -1
  120. package/dist/tools/memory.store.js +31 -1
  121. package/dist/tools/memory.store.js.map +1 -1
  122. package/dist/tools/memory.summarize.d.ts.map +1 -1
  123. package/dist/tools/memory.summarize.js +19 -1
  124. package/dist/tools/memory.summarize.js.map +1 -1
  125. package/dist/tools/memory.synthesize.d.ts +14 -0
  126. package/dist/tools/memory.synthesize.d.ts.map +1 -0
  127. package/dist/tools/memory.synthesize.js +228 -0
  128. package/dist/tools/memory.synthesize.js.map +1 -0
  129. package/dist/tools/memory.update.d.ts.map +1 -1
  130. package/dist/tools/memory.update.js +19 -1
  131. package/dist/tools/memory.update.js.map +1 -1
  132. package/dist/tools/schemas.d.ts +1750 -263
  133. package/dist/tools/schemas.d.ts.map +1 -1
  134. package/dist/tools/schemas.js +482 -14
  135. package/dist/tools/schemas.js.map +1 -1
  136. package/dist/tools/task.bulk-manage.d.ts +1 -7
  137. package/dist/tools/task.bulk-manage.d.ts.map +1 -1
  138. package/dist/tools/task.bulk-manage.js +60 -15
  139. package/dist/tools/task.bulk-manage.js.map +1 -1
  140. package/dist/tools/task.manage.d.ts +12 -28
  141. package/dist/tools/task.manage.d.ts.map +1 -1
  142. package/dist/tools/task.manage.js +198 -31
  143. package/dist/tools/task.manage.js.map +1 -1
  144. package/dist/utils/completion.d.ts +2 -0
  145. package/dist/utils/completion.d.ts.map +1 -0
  146. package/dist/utils/completion.js +28 -0
  147. package/dist/utils/completion.js.map +1 -0
  148. package/dist/utils/logger.d.ts +18 -0
  149. package/dist/utils/logger.d.ts.map +1 -1
  150. package/dist/utils/logger.js +101 -29
  151. package/dist/utils/logger.js.map +1 -1
  152. package/dist/utils/mcp-response.d.ts +50 -0
  153. package/dist/utils/mcp-response.d.ts.map +1 -1
  154. package/dist/utils/mcp-response.js +54 -7
  155. package/dist/utils/mcp-response.js.map +1 -1
  156. package/dist/utils/normalize.d.ts +5 -0
  157. package/dist/utils/normalize.d.ts.map +1 -1
  158. package/dist/utils/normalize.js +11 -0
  159. package/dist/utils/normalize.js.map +1 -1
  160. package/dist/utils/pagination.d.ts +6 -0
  161. package/dist/utils/pagination.d.ts.map +1 -0
  162. package/dist/utils/pagination.js +32 -0
  163. package/dist/utils/pagination.js.map +1 -0
  164. package/package.json +1 -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;;;;;;EA6HxD"}
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,62 +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
- // Include backlog, pending, in_progress, and blocked by default for 'current' view
152
+ throw resourceNotFound("Repo parameter is required for tasks://current", uri);
53
153
  const tasks = db.getTasksByRepo(repo).filter(t => ["backlog", "pending", "in_progress", "blocked"].includes(t.status));
154
+ const payload = JSON.stringify(tasks, null, 2);
54
155
  return {
55
156
  contents: [
56
157
  {
57
158
  uri,
58
159
  mimeType: "application/json",
59
- 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
+ },
60
167
  }
61
168
  ]
62
169
  };
@@ -68,13 +175,20 @@ export function readResource(uri, db) {
68
175
  const includeArchived = parsed.searchParams.get("archived") === "true";
69
176
  const entries = repo
70
177
  ? db.searchByRepo(repo, { limit: 50, includeArchived })
71
- : db.listRecent(50); // Fallback to global recent
178
+ : db.listRecent(50);
179
+ const payload = JSON.stringify(entries, null, 2);
72
180
  return {
73
181
  contents: [
74
182
  {
75
183
  uri,
76
184
  mimeType: "application/json",
77
- 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
+ },
78
192
  }
79
193
  ]
80
194
  };
@@ -82,18 +196,24 @@ export function readResource(uri, db) {
82
196
  // 2. Tag Affinity Resource: memory://tags/{tag}
83
197
  if (uri.startsWith("memory://tags/")) {
84
198
  const tag = uri.replace("memory://tags/", "");
85
- // Search across all repos for this specific technology tag
86
199
  const entries = db.searchByRepo("", {
87
200
  tags: [tag],
88
201
  limit: 50,
89
202
  includeArchived: false
90
203
  });
204
+ const payload = JSON.stringify({ tag, count: entries.length, entries }, null, 2);
91
205
  return {
92
206
  contents: [
93
207
  {
94
208
  uri,
95
209
  mimeType: "application/json",
96
- 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
+ },
97
217
  }
98
218
  ]
99
219
  };
@@ -102,35 +222,47 @@ export function readResource(uri, db) {
102
222
  if (uri.startsWith("memory://summary/")) {
103
223
  const repo = uri.replace("memory://summary/", "");
104
224
  const summary = db.getSummary(repo);
225
+ const text = summary?.summary || `No summary available for repository: ${repo}`;
105
226
  return {
106
227
  contents: [
107
228
  {
108
229
  uri,
109
230
  mimeType: "text/plain",
110
- 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
+ },
111
238
  }
112
239
  ]
113
240
  };
114
241
  }
115
- // 4. View memory by ID: memory://{uuid}
116
242
  const idMatch = uri.match(/^memory:\/\/([0-9a-f-]{36})$/i);
117
243
  if (idMatch) {
118
244
  const id = idMatch[1];
119
- const entry = db.getByIdWithStats(id); // Use version with stats for full detail
245
+ const entry = db.getByIdWithStats(id);
120
246
  if (!entry) {
121
- throw new Error(`Memory with ID ${id} not found.`);
247
+ throw resourceNotFound(`Memory with ID ${id} not found.`, uri);
122
248
  }
249
+ const payload = JSON.stringify(entry, null, 2);
123
250
  return {
124
251
  contents: [
125
252
  {
126
253
  uri,
127
254
  mimeType: "application/json",
128
- 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
+ },
129
262
  }
130
263
  ]
131
264
  };
132
265
  }
133
- // 5. Semantic Search via URI: memory://search/{base64_query}?repo={repo}
134
266
  if (uri.startsWith("memory://search/")) {
135
267
  const parts = uri.replace("memory://search/", "").split('?');
136
268
  const encodedQuery = parts[0];
@@ -138,16 +270,54 @@ export function readResource(uri, db) {
138
270
  const parsed = new URL("http://memory/" + (parts[1] || ""));
139
271
  const repo = parsed.searchParams.get("repo") || "";
140
272
  const results = db.searchBySimilarity(query, repo, 10);
273
+ const payload = JSON.stringify({ query, repo, results }, null, 2);
141
274
  return {
142
275
  contents: [
143
276
  {
144
277
  uri,
145
278
  mimeType: "application/json",
146
- 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
+ },
147
286
  }
148
287
  ]
149
288
  };
150
289
  }
151
- 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;
152
322
  }
153
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"}