@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,21 +1,21 @@
1
+ export declare const MCP_PROTOCOL_VERSION = "2025-11-25";
1
2
  export declare const CAPABILITIES: {
2
3
  serverInfo: {
3
4
  name: string;
4
5
  version: string;
5
6
  };
6
7
  capabilities: {
8
+ completions: {};
9
+ logging: {};
7
10
  resources: {
8
- list: boolean;
9
- read: boolean;
10
- templates: boolean;
11
+ subscribe: boolean;
12
+ listChanged: boolean;
11
13
  };
12
14
  tools: {
13
- list: boolean;
14
- call: boolean;
15
+ listChanged: boolean;
15
16
  };
16
17
  prompts: {
17
- list: boolean;
18
- get: boolean;
18
+ listChanged: boolean;
19
19
  };
20
20
  };
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;CAoBxB,CAAC"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC"}
@@ -14,24 +14,24 @@ catch (e) {
14
14
  // Fallback to default version if reading fails
15
15
  }
16
16
  // MCP Server Capabilities
17
+ export const MCP_PROTOCOL_VERSION = "2025-11-25";
17
18
  export const CAPABILITIES = {
18
19
  serverInfo: {
19
20
  name: "mcp-memory-local",
20
21
  version: pkgVersion
21
22
  },
22
23
  capabilities: {
24
+ completions: {},
25
+ logging: {},
23
26
  resources: {
24
- list: true,
25
- read: true,
26
- templates: true
27
+ subscribe: true,
28
+ listChanged: true
27
29
  },
28
30
  tools: {
29
- list: true,
30
- call: true
31
+ listChanged: false
31
32
  },
32
33
  prompts: {
33
- list: true,
34
- get: true
34
+ listChanged: true
35
35
  }
36
36
  }
37
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACxD,IAAI,UAAU,GAAG,OAAO,CAAC;AAEzB,IAAI,CAAC;IACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC;IAC3B,CAAC;AACH,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,+CAA+C;AACjD,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE;QACV,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,UAAU;KACpB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI;SAChB;QACD,KAAK,EAAE;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;SACX;QACD,OAAO,EAAE;YACP,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;SACV;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACxD,IAAI,UAAU,GAAG,OAAO,CAAC;AAEzB,IAAI,CAAC;IACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC;IAC3B,CAAC;AACH,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,+CAA+C;AACjD,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE;QACV,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,UAAU;KACpB;IACD,YAAY,EAAE;QACZ,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;QACX,SAAS,EAAE;YACT,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;SAClB;QACD,KAAK,EAAE;YACL,WAAW,EAAE,KAAK;SACnB;QACD,OAAO,EAAE;YACP,WAAW,EAAE,IAAI;SAClB;KACF;CACF,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { SQLiteStore } from "./storage/sqlite.js";
2
+ import { SessionContext } from "./mcp/session.js";
3
+ type CompletionRequest = {
4
+ ref?: {
5
+ type?: string;
6
+ name?: string;
7
+ uri?: string;
8
+ };
9
+ argument?: {
10
+ name?: string;
11
+ value?: string;
12
+ };
13
+ context?: {
14
+ arguments?: Record<string, unknown>;
15
+ };
16
+ };
17
+ export declare function complete(params: CompletionRequest, db: SQLiteStore, session?: SessionContext): {
18
+ completion: {
19
+ values: string[];
20
+ total: number;
21
+ hasMore: boolean;
22
+ };
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAA4C,MAAM,kBAAkB,CAAC;AAK5F,KAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAKF,wBAAgB,QAAQ,CACtB,MAAM,EAAE,iBAAiB,EACzB,EAAE,EAAE,WAAW,EACf,OAAO,CAAC,EAAE,cAAc;;;;;;EA6CzB"}
@@ -0,0 +1,127 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { getFilesystemRoots, inferRepoFromSession } from "./mcp/session.js";
4
+ import { completePromptArgument } from "./prompts/registry.js";
5
+ import { completeResourceArgument } from "./resources/index.js";
6
+ const MAX_COMPLETION_VALUES = 100;
7
+ const MAX_FILE_SCAN_RESULTS = 300;
8
+ export function complete(params, db, session) {
9
+ const refType = params?.ref?.type;
10
+ const argumentName = typeof params?.argument?.name === "string" ? params.argument.name : "";
11
+ const argumentValue = typeof params?.argument?.value === "string" ? params.argument.value : "";
12
+ const contextArguments = params?.context?.arguments ?? {};
13
+ if (!refType || !argumentName) {
14
+ throw invalidCompletionParams("completion/complete requires ref.type and argument.name");
15
+ }
16
+ const dataSources = {
17
+ repos: getSuggestedRepos(db, session),
18
+ tags: getSuggestedTags(db),
19
+ filePaths: getSuggestedFilePaths(session),
20
+ tasks: getSuggestedTasks(db, session, contextArguments),
21
+ };
22
+ if (refType === "ref/prompt") {
23
+ const promptName = typeof params?.ref?.name === "string" ? params.ref.name : "";
24
+ if (!promptName) {
25
+ throw invalidCompletionParams("Prompt completion requires ref.name");
26
+ }
27
+ return {
28
+ completion: buildCompletionResult(completePromptArgument(promptName, argumentName, argumentValue, contextArguments, dataSources)),
29
+ };
30
+ }
31
+ if (refType === "ref/resource") {
32
+ const resourceUri = typeof params?.ref?.uri === "string" ? params.ref.uri : "";
33
+ if (!resourceUri) {
34
+ throw invalidCompletionParams("Resource completion requires ref.uri");
35
+ }
36
+ return {
37
+ completion: buildCompletionResult(completeResourceArgument(resourceUri, argumentName, argumentValue, contextArguments, dataSources)),
38
+ };
39
+ }
40
+ throw invalidCompletionParams(`Unsupported completion ref type: ${refType}`);
41
+ }
42
+ function buildCompletionResult(values) {
43
+ const capped = values.slice(0, MAX_COMPLETION_VALUES);
44
+ return {
45
+ values: capped,
46
+ total: values.length,
47
+ hasMore: values.length > capped.length,
48
+ };
49
+ }
50
+ function getSuggestedRepos(db, session) {
51
+ const values = new Set();
52
+ const inferredRepo = inferRepoFromSession(session);
53
+ if (inferredRepo)
54
+ values.add(inferredRepo);
55
+ for (const rootPath of getFilesystemRoots(session)) {
56
+ values.add(path.basename(rootPath));
57
+ }
58
+ for (const repo of db.listRepos()) {
59
+ values.add(repo);
60
+ }
61
+ return [...values].sort((a, b) => a.localeCompare(b));
62
+ }
63
+ function getSuggestedTags(db) {
64
+ const values = new Set();
65
+ const memories = db.getAllMemoriesWithStats();
66
+ for (const memory of memories) {
67
+ for (const tag of memory.tags || []) {
68
+ if (typeof tag === "string" && tag.trim()) {
69
+ values.add(tag.trim());
70
+ }
71
+ }
72
+ }
73
+ return [...values].sort((a, b) => a.localeCompare(b));
74
+ }
75
+ function getSuggestedTasks(db, session, contextArguments) {
76
+ const repo = typeof contextArguments.repo === "string" && contextArguments.repo.trim()
77
+ ? contextArguments.repo.trim()
78
+ : inferRepoFromSession(session);
79
+ if (!repo)
80
+ return [];
81
+ return db.getTasksByRepo(repo, undefined, 100).map((task) => ({
82
+ id: task.id,
83
+ task_code: task.task_code,
84
+ title: task.title,
85
+ }));
86
+ }
87
+ function getSuggestedFilePaths(session) {
88
+ const roots = getFilesystemRoots(session);
89
+ const results = [];
90
+ for (const rootPath of roots) {
91
+ collectFiles(rootPath, rootPath, results);
92
+ if (results.length >= MAX_FILE_SCAN_RESULTS)
93
+ break;
94
+ }
95
+ return results.sort((a, b) => a.localeCompare(b));
96
+ }
97
+ function collectFiles(rootPath, currentPath, results) {
98
+ if (results.length >= MAX_FILE_SCAN_RESULTS)
99
+ return;
100
+ let entries;
101
+ try {
102
+ entries = fs.readdirSync(currentPath, { withFileTypes: true });
103
+ }
104
+ catch {
105
+ return;
106
+ }
107
+ for (const entry of entries) {
108
+ if (results.length >= MAX_FILE_SCAN_RESULTS)
109
+ return;
110
+ if (entry.name === "node_modules" || entry.name === ".git" || entry.name === "dist")
111
+ continue;
112
+ const fullPath = path.join(currentPath, entry.name);
113
+ if (entry.isDirectory()) {
114
+ collectFiles(rootPath, fullPath, results);
115
+ continue;
116
+ }
117
+ if (!entry.isFile())
118
+ continue;
119
+ results.push(path.relative(rootPath, fullPath) || entry.name);
120
+ }
121
+ }
122
+ function invalidCompletionParams(message) {
123
+ const error = new Error(message);
124
+ error.code = -32602;
125
+ return error;
126
+ }
127
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAkB,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAkBhE,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,UAAU,QAAQ,CACtB,MAAyB,EACzB,EAAe,EACf,OAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAClC,MAAM,YAAY,GAAG,OAAO,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,aAAa,GAAG,OAAO,MAAM,EAAE,QAAQ,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,gBAAgB,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;IAE1D,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,uBAAuB,CAAC,yDAAyD,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC;QACrC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC;QACzC,KAAK,EAAE,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC;KACxD,CAAC;IAEF,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,uBAAuB,CAAC,qCAAqC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO;YACL,UAAU,EAAE,qBAAqB,CAC/B,sBAAsB,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAC/F;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,OAAO,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,uBAAuB,CAAC,sCAAsC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO;YACL,UAAU,EAAE,qBAAqB,CAC/B,wBAAwB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAClG;SACF,CAAC;IACJ,CAAC;IAED,MAAM,uBAAuB,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAgB;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACtD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAe,EAAE,OAAwB;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,YAAY;QAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE3C,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAe;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,QAAQ,GAAG,EAAE,CAAC,uBAAuB,EAAE,CAAC;IAE9C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB,CACxB,EAAe,EACf,OAAmC,EACnC,gBAAyC;IAEzC,MAAM,IAAI,GAAG,OAAO,gBAAgB,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;QACpF,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;QAC9B,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;QACjE,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAwB;IACrD,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,IAAI,qBAAqB;YAAE,MAAM;IACrD,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,WAAmB,EAAE,OAAiB;IAC5E,IAAI,OAAO,CAAC,MAAM,IAAI,qBAAqB;QAAE,OAAO;IAEpD,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,IAAI,qBAAqB;YAAE,OAAO;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAE9F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAA8B,CAAC;IAC9D,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAcA,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAGnB;IACJ,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,YAAY,CAAK;gBAEb,UAAU,CAAC,EAAE,MAAM;IAIzB,KAAK;IAoEX;;OAEG;IACH,OAAO,CAAC,QAAQ;IA0BhB;;;OAGG;YACW,aAAa;IAkCrB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD;;;OAGG;IACH,IAAI;IAgBJ,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,eAAe,IAAI,MAAM;CAG1B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAeA,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAGnB;IACJ,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,YAAY,CAAK;gBAEb,UAAU,CAAC,EAAE,MAAM;IAIzB,KAAK;IA2EX;;OAEG;IACH,OAAO,CAAC,QAAQ;IA0BhB;;;OAGG;YACW,aAAa;IAkCrB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD;;;OAGG;IACH,IAAI;IAgBJ,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,eAAe,IAAI,MAAM;CAG1B"}
@@ -2,6 +2,7 @@ import { spawn } from "child_process";
2
2
  import { createInterface } from "readline";
3
3
  import path from "path";
4
4
  import { fileURLToPath } from "url";
5
+ import { MCP_PROTOCOL_VERSION } from "../capabilities.js";
5
6
  import { logger } from "../utils/logger.js";
6
7
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
8
  // Exponential backoff delays in ms: 1s, 2s, 4s
@@ -74,10 +75,16 @@ export class MCPClient {
74
75
  }
75
76
  });
76
77
  await this.callWithRetry("initialize", {
77
- protocolVersion: "2024-11-05",
78
+ protocolVersion: MCP_PROTOCOL_VERSION,
78
79
  capabilities: {},
79
80
  clientInfo: { name: "mcp-client", version: "1.0.0" },
80
81
  });
82
+ if (this.process?.stdin) {
83
+ this.process.stdin.write(JSON.stringify({
84
+ jsonrpc: "2.0",
85
+ method: "notifications/initialized",
86
+ }) + "\n");
87
+ }
81
88
  this.isInitialized = true;
82
89
  }
83
90
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export type ElicitationAction = "accept" | "decline" | "cancel";
2
+ export type FormElicitationRequest = {
3
+ mode?: "form";
4
+ message: string;
5
+ requestedSchema: {
6
+ type: "object";
7
+ properties: Record<string, unknown>;
8
+ required?: string[];
9
+ };
10
+ };
11
+ export type UrlElicitationRequest = {
12
+ mode: "url";
13
+ message: string;
14
+ url: string;
15
+ elicitationId: string;
16
+ };
17
+ export type ElicitationCreateParams = FormElicitationRequest | UrlElicitationRequest;
18
+ export type ElicitationCreateResult = {
19
+ action: ElicitationAction;
20
+ content?: Record<string, unknown>;
21
+ };
22
+ export type ElicitationRequestHandler = (params: ElicitationCreateParams) => Promise<ElicitationCreateResult>;
23
+ export declare function extractAcceptedElicitationContent(result: ElicitationCreateResult | null | undefined): Record<string, unknown>;
24
+ //# sourceMappingURL=elicitation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicitation.d.ts","sourceRoot":"","sources":["../../src/mcp/elicitation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,EAAE,uBAAuB,KAC5B,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEtC,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB"}
@@ -0,0 +1,13 @@
1
+ export function extractAcceptedElicitationContent(result) {
2
+ if (result?.action === "accept" && result.content && typeof result.content === "object") {
3
+ return result.content;
4
+ }
5
+ if (result?.action === "decline") {
6
+ throw new Error("User declined the elicitation request");
7
+ }
8
+ if (result?.action === "cancel") {
9
+ throw new Error("User canceled the elicitation request");
10
+ }
11
+ throw new Error("Elicitation did not return accepted content");
12
+ }
13
+ //# sourceMappingURL=elicitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../src/mcp/elicitation.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,iCAAiC,CAC/C,MAAkD;IAElD,IAAI,MAAM,EAAE,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxF,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,69 @@
1
+ export type SamplingContent = {
2
+ type: "text";
3
+ text: string;
4
+ } | {
5
+ type: "image";
6
+ data: string;
7
+ mimeType: string;
8
+ } | {
9
+ type: "audio";
10
+ data: string;
11
+ mimeType: string;
12
+ } | {
13
+ type: "tool_use";
14
+ id: string;
15
+ name: string;
16
+ input: Record<string, unknown>;
17
+ };
18
+ export type SamplingMessage = {
19
+ role: "user" | "assistant";
20
+ content: SamplingContent | SamplingContent[] | {
21
+ type: "tool_result";
22
+ toolUseId: string;
23
+ content: Array<{
24
+ type: "text";
25
+ text: string;
26
+ }>;
27
+ isError?: boolean;
28
+ } | Array<{
29
+ type: "tool_result";
30
+ toolUseId: string;
31
+ content: Array<{
32
+ type: "text";
33
+ text: string;
34
+ }>;
35
+ isError?: boolean;
36
+ }>;
37
+ };
38
+ export type SamplingToolDefinition = {
39
+ name: string;
40
+ description: string;
41
+ inputSchema: Record<string, unknown>;
42
+ };
43
+ export type SamplingCreateMessageParams = {
44
+ messages: SamplingMessage[];
45
+ systemPrompt?: string;
46
+ maxTokens?: number;
47
+ modelPreferences?: Record<string, unknown>;
48
+ tools?: SamplingToolDefinition[];
49
+ toolChoice?: {
50
+ mode: "auto" | "required" | "none";
51
+ name?: string;
52
+ };
53
+ };
54
+ export type SamplingCreateMessageResult = {
55
+ role: "assistant";
56
+ content: SamplingContent | SamplingContent[];
57
+ model?: string;
58
+ stopReason?: string;
59
+ };
60
+ export type SamplingRequestHandler = (params: SamplingCreateMessageParams) => Promise<SamplingCreateMessageResult>;
61
+ export declare function asArray<T>(value: T | T[]): T[];
62
+ export declare function extractTextFromContent(content: SamplingContent | SamplingContent[]): string;
63
+ export declare function extractToolUses(content: SamplingContent | SamplingContent[]): {
64
+ type: "tool_use";
65
+ id: string;
66
+ name: string;
67
+ input: Record<string, unknown>;
68
+ }[];
69
+ //# sourceMappingURL=sampling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampling.d.ts","sourceRoot":"","sources":["../../src/mcp/sampling.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EACH,eAAe,GACf,eAAe,EAAE,GACjB;QACE,IAAI,EAAE,aAAa,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GACD,KAAK,CAAC;QACJ,IAAI,EAAE,aAAa,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACR,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,2BAA2B,KAChC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAE1C,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAE9C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,EAAE,GAAG,MAAM,CAK3F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,EAAE;UAE9C,UAAU;QAAM,MAAM;UAAQ,MAAM;WAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAGjG"}
@@ -0,0 +1,13 @@
1
+ export function asArray(value) {
2
+ return Array.isArray(value) ? value : [value];
3
+ }
4
+ export function extractTextFromContent(content) {
5
+ return asArray(content)
6
+ .filter((entry) => entry.type === "text")
7
+ .map((entry) => entry.text)
8
+ .join("\n");
9
+ }
10
+ export function extractToolUses(content) {
11
+ return asArray(content).filter((entry) => entry.type === "tool_use");
12
+ }
13
+ //# sourceMappingURL=sampling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampling.js","sourceRoot":"","sources":["../../src/mcp/sampling.ts"],"names":[],"mappings":"AAmDA,MAAM,UAAU,OAAO,CAAI,KAAc;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAA4C;IACjF,OAAO,OAAO,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,CAAC,KAAK,EAA2C,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;SACjF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA4C;IAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAC5B,CAAC,KAAK,EAA2F,EAAE,CACjG,KAAK,CAAC,IAAI,KAAK,UAAU,CAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type McpRoot = {
2
+ uri: string;
3
+ name?: string;
4
+ };
5
+ export type SessionContext = {
6
+ clientInfo?: {
7
+ name?: string;
8
+ version?: string;
9
+ };
10
+ clientCapabilities?: Record<string, any>;
11
+ roots: McpRoot[];
12
+ supportsRoots: boolean;
13
+ supportsSampling: boolean;
14
+ supportsSamplingTools: boolean;
15
+ supportsElicitation: boolean;
16
+ supportsElicitationForm: boolean;
17
+ supportsElicitationUrl: boolean;
18
+ };
19
+ export declare function createSessionContext(): SessionContext;
20
+ export declare function updateSessionFromInitialize(session: SessionContext, params: any): void;
21
+ export declare function updateSessionRoots(session: SessionContext, roots: McpRoot[]): boolean;
22
+ export declare function normalizeRoots(roots: unknown): McpRoot[];
23
+ export declare function extractRootsFromResult(result: any): McpRoot[];
24
+ export declare function getFilesystemRoots(session?: SessionContext): string[];
25
+ export declare function isPathWithinRoots(targetPath: string, session?: SessionContext): boolean;
26
+ export declare function findContainingRoot(targetPath: string, session?: SessionContext): string | null;
27
+ export declare function inferRepoFromSession(session?: SessionContext): string | undefined;
28
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,cAAc,CAUrD;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,GAAG,GACV,IAAI,CASN;AAcD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAMT;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAkBxD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,EAAE,CAE7D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAarE;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CASvF;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAa9F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAMjF"}
@@ -0,0 +1,106 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ export function createSessionContext() {
4
+ return {
5
+ roots: [],
6
+ supportsRoots: false,
7
+ supportsSampling: false,
8
+ supportsSamplingTools: false,
9
+ supportsElicitation: false,
10
+ supportsElicitationForm: false,
11
+ supportsElicitationUrl: false,
12
+ };
13
+ }
14
+ export function updateSessionFromInitialize(session, params) {
15
+ session.clientInfo = params?.clientInfo;
16
+ session.clientCapabilities = params?.capabilities ?? {};
17
+ session.supportsRoots = Boolean(params?.capabilities?.roots);
18
+ session.supportsSampling = Boolean(params?.capabilities?.sampling);
19
+ session.supportsSamplingTools = Boolean(params?.capabilities?.sampling?.tools);
20
+ session.supportsElicitation = Boolean(params?.capabilities?.elicitation);
21
+ session.supportsElicitationForm = supportsElicitationMode(params?.capabilities?.elicitation, "form");
22
+ session.supportsElicitationUrl = supportsElicitationMode(params?.capabilities?.elicitation, "url");
23
+ }
24
+ function supportsElicitationMode(capability, mode) {
25
+ if (!capability || typeof capability !== "object") {
26
+ return false;
27
+ }
28
+ if (mode === "form") {
29
+ return Object.keys(capability).length === 0 || typeof capability.form === "object";
30
+ }
31
+ return typeof capability.url === "object";
32
+ }
33
+ export function updateSessionRoots(session, roots) {
34
+ const normalized = normalizeRoots(roots);
35
+ const previous = JSON.stringify(session.roots);
36
+ const next = JSON.stringify(normalized);
37
+ session.roots = normalized;
38
+ return previous !== next;
39
+ }
40
+ export function normalizeRoots(roots) {
41
+ if (!Array.isArray(roots))
42
+ return [];
43
+ const seen = new Set();
44
+ const normalized = [];
45
+ for (const root of roots) {
46
+ if (!root || typeof root !== "object")
47
+ continue;
48
+ const uri = typeof root.uri === "string" ? root.uri : undefined;
49
+ const name = typeof root.name === "string" ? root.name : undefined;
50
+ if (!uri || seen.has(uri))
51
+ continue;
52
+ seen.add(uri);
53
+ normalized.push({ uri, name });
54
+ }
55
+ return normalized;
56
+ }
57
+ export function extractRootsFromResult(result) {
58
+ return normalizeRoots(result?.roots);
59
+ }
60
+ export function getFilesystemRoots(session) {
61
+ if (!session)
62
+ return [];
63
+ const resolved = [];
64
+ for (const root of session.roots) {
65
+ if (!root.uri.startsWith("file://"))
66
+ continue;
67
+ try {
68
+ resolved.push(path.resolve(fileURLToPath(root.uri)));
69
+ }
70
+ catch {
71
+ // Ignore malformed file URIs.
72
+ }
73
+ }
74
+ return resolved;
75
+ }
76
+ export function isPathWithinRoots(targetPath, session) {
77
+ const roots = getFilesystemRoots(session);
78
+ if (roots.length === 0)
79
+ return true;
80
+ const normalizedTarget = path.resolve(targetPath);
81
+ return roots.some((rootPath) => {
82
+ const relative = path.relative(rootPath, normalizedTarget);
83
+ return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
84
+ });
85
+ }
86
+ export function findContainingRoot(targetPath, session) {
87
+ const roots = getFilesystemRoots(session);
88
+ if (roots.length === 0)
89
+ return null;
90
+ const normalizedTarget = path.resolve(targetPath);
91
+ for (const rootPath of roots) {
92
+ const relative = path.relative(rootPath, normalizedTarget);
93
+ if (relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative))) {
94
+ return rootPath;
95
+ }
96
+ }
97
+ return null;
98
+ }
99
+ export function inferRepoFromSession(session) {
100
+ const roots = getFilesystemRoots(session);
101
+ if (roots.length === 1) {
102
+ return path.basename(roots[0]);
103
+ }
104
+ return undefined;
105
+ }
106
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}