@decaf-ts/mcp-server 0.0.3 → 0.2.0

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 (214) hide show
  1. package/README.md +18 -2
  2. package/dist/mcp-server.cjs +1989 -341
  3. package/dist/mcp-server.esm.cjs +1963 -338
  4. package/lib/McpWrapper.cjs +12 -10
  5. package/lib/McpWrapper.d.ts +1 -1
  6. package/lib/bin/validate-modules.cjs +24 -0
  7. package/lib/bin/validate-modules.d.ts +2 -0
  8. package/lib/constants.cjs +22 -2
  9. package/lib/constants.d.ts +16 -0
  10. package/lib/esm/McpWrapper.d.ts +1 -1
  11. package/lib/esm/McpWrapper.js +12 -10
  12. package/lib/esm/bin/validate-modules.d.ts +2 -0
  13. package/lib/esm/bin/validate-modules.js +22 -0
  14. package/lib/esm/constants.d.ts +16 -0
  15. package/lib/esm/constants.js +21 -1
  16. package/lib/esm/mcp/aggregateModules.d.ts +26 -0
  17. package/lib/esm/mcp/aggregateModules.js +185 -0
  18. package/lib/esm/mcp/code.d.ts +23 -0
  19. package/lib/esm/mcp/code.js +70 -0
  20. package/lib/esm/mcp/decorator-tools.js +237 -0
  21. package/lib/esm/mcp/fastmcp-wiring.d.ts +14 -0
  22. package/lib/esm/mcp/fastmcp-wiring.js +56 -0
  23. package/lib/esm/mcp/index.d.ts +7 -1
  24. package/lib/esm/mcp/index.js +26 -2
  25. package/lib/esm/mcp/mcp-module.d.ts +11 -0
  26. package/lib/esm/mcp/mcp-module.js +31 -0
  27. package/lib/esm/mcp/moduleRegistry.d.ts +12 -0
  28. package/lib/esm/mcp/moduleRegistry.js +46 -0
  29. package/lib/esm/mcp/prompts/index.d.ts +4 -0
  30. package/lib/esm/mcp/prompts/index.js +7 -0
  31. package/lib/esm/mcp/prompts/prompts.d.ts +22 -0
  32. package/lib/esm/mcp/prompts/prompts.js +197 -0
  33. package/lib/esm/mcp/resources/index.d.ts +1 -0
  34. package/lib/esm/mcp/resources/index.js +2 -0
  35. package/lib/esm/mcp/resources/resources.d.ts +2 -0
  36. package/lib/esm/mcp/resources/resources.js +69 -0
  37. package/lib/esm/mcp/schemas.d.ts +53 -0
  38. package/lib/esm/mcp/schemas.js +97 -0
  39. package/lib/esm/mcp/templates/codex-templates.d.ts +3 -0
  40. package/lib/esm/mcp/templates/codex-templates.js +33 -0
  41. package/lib/esm/mcp/templates/index.d.ts +71 -0
  42. package/lib/esm/mcp/templates/index.js +66 -0
  43. package/lib/esm/mcp/templates/resource-templates.d.ts +3 -0
  44. package/lib/esm/mcp/templates/resource-templates.js +60 -0
  45. package/lib/esm/mcp/templates/workspace-templates.d.ts +3 -0
  46. package/lib/esm/mcp/templates/workspace-templates.js +66 -0
  47. package/lib/esm/mcp/tools/codex-tools.d.ts +5 -0
  48. package/lib/esm/mcp/tools/codex-tools.js +244 -0
  49. package/lib/esm/mcp/tools/generateMcpModule.d.ts +9 -0
  50. package/lib/esm/mcp/tools/generateMcpModule.js +133 -0
  51. package/lib/esm/mcp/tools/index.d.ts +321 -0
  52. package/lib/esm/mcp/tools/index.js +29 -0
  53. package/lib/esm/mcp/tools/tools.d.ts +10 -0
  54. package/lib/esm/mcp/tools/tools.js +273 -0
  55. package/lib/esm/mcp/types.d.ts +66 -0
  56. package/lib/esm/mcp/types.js +2 -0
  57. package/lib/esm/mcp/utils.d.ts +4 -0
  58. package/lib/esm/mcp/utils.js +46 -0
  59. package/lib/esm/mcp/validation/index.d.ts +13 -0
  60. package/lib/esm/mcp/validation/index.js +116 -0
  61. package/lib/esm/mcp/validation/scaffoldModule.d.ts +9 -0
  62. package/lib/esm/mcp/validation/scaffoldModule.js +88 -0
  63. package/lib/esm/mcp/workspace.d.ts +9 -0
  64. package/lib/esm/mcp/workspace.js +73 -0
  65. package/lib/esm/metadata.d.ts +1 -1
  66. package/lib/esm/metadata.js +1 -1
  67. package/lib/esm/modules/_template/index.d.ts +32 -0
  68. package/lib/esm/modules/_template/index.js +16 -0
  69. package/lib/esm/modules/_template/prompts/index.d.ts +6 -0
  70. package/lib/esm/modules/_template/prompts/index.js +9 -0
  71. package/lib/esm/modules/_template/resources/index.d.ts +6 -0
  72. package/lib/esm/modules/_template/resources/index.js +9 -0
  73. package/lib/esm/modules/_template/templates/index.d.ts +7 -0
  74. package/lib/esm/modules/_template/templates/index.js +10 -0
  75. package/lib/esm/modules/_template/tools/index.d.ts +6 -0
  76. package/lib/esm/modules/_template/tools/index.js +15 -0
  77. package/lib/esm/modules/decoration/index.d.ts +46 -0
  78. package/lib/esm/modules/decoration/index.js +10 -2
  79. package/lib/esm/modules/decoration/prompts/index.d.ts +1 -0
  80. package/lib/esm/modules/decoration/prompts/index.js +2 -0
  81. package/lib/esm/modules/decoration/resources/index.d.ts +7 -0
  82. package/lib/esm/modules/decoration/resources/index.js +10 -0
  83. package/lib/esm/modules/decoration/templates/index.d.ts +6 -0
  84. package/lib/esm/modules/decoration/templates/index.js +9 -0
  85. package/lib/esm/modules/decoration/tools/index.d.ts +26 -0
  86. package/lib/esm/modules/decoration/tools/index.js +7 -0
  87. package/lib/esm/modules/index.d.ts +2 -0
  88. package/lib/esm/modules/index.js +10 -0
  89. package/lib/esm/modules/mcp/decoration-assist.d.ts +4 -0
  90. package/lib/esm/modules/mcp/decoration-assist.js +6 -0
  91. package/lib/esm/modules/mcp/index.d.ts +6 -2
  92. package/lib/esm/modules/mcp/index.js +16 -3
  93. package/lib/esm/modules/mcp/prompts/index.d.ts +2 -0
  94. package/lib/esm/modules/mcp/prompts/index.js +9 -0
  95. package/lib/esm/modules/mcp/resources/index.d.ts +2 -0
  96. package/lib/esm/modules/mcp/resources/index.js +24 -0
  97. package/lib/esm/modules/mcp/templates/index.d.ts +2 -0
  98. package/lib/esm/modules/mcp/templates/index.js +28 -0
  99. package/lib/esm/modules/mcp/tools/index.d.ts +6 -0
  100. package/lib/esm/modules/mcp/tools/index.js +15 -0
  101. package/lib/esm/types.d.ts +41 -1
  102. package/lib/esm/types.js +1 -1
  103. package/lib/esm/utils/modulePaths.d.ts +6 -0
  104. package/lib/esm/utils/modulePaths.js +33 -0
  105. package/lib/esm/utils/moduleValidator.d.ts +14 -0
  106. package/lib/esm/utils/moduleValidator.js +176 -0
  107. package/lib/esm/utils.d.ts +1 -0
  108. package/lib/esm/utils.js +2 -1
  109. package/lib/mcp/aggregateModules.cjs +225 -0
  110. package/lib/mcp/aggregateModules.d.ts +26 -0
  111. package/lib/mcp/code.cjs +81 -0
  112. package/lib/mcp/code.d.ts +23 -0
  113. package/lib/mcp/decorator-tools.cjs +243 -0
  114. package/lib/mcp/fastmcp-wiring.cjs +59 -0
  115. package/lib/mcp/fastmcp-wiring.d.ts +14 -0
  116. package/lib/mcp/index.cjs +47 -12
  117. package/lib/mcp/index.d.ts +7 -1
  118. package/lib/mcp/mcp-module.cjs +53 -0
  119. package/lib/mcp/mcp-module.d.ts +11 -0
  120. package/lib/mcp/moduleRegistry.cjs +50 -0
  121. package/lib/mcp/moduleRegistry.d.ts +12 -0
  122. package/lib/mcp/prompts/index.cjs +25 -0
  123. package/lib/mcp/prompts/index.d.ts +4 -0
  124. package/lib/mcp/prompts/prompts.cjs +211 -0
  125. package/lib/mcp/prompts/prompts.d.ts +22 -0
  126. package/lib/mcp/resources/index.cjs +18 -0
  127. package/lib/mcp/resources/index.d.ts +1 -0
  128. package/lib/mcp/resources/resources.cjs +72 -0
  129. package/lib/mcp/resources/resources.d.ts +2 -0
  130. package/lib/mcp/schemas.cjs +100 -0
  131. package/lib/mcp/schemas.d.ts +53 -0
  132. package/lib/mcp/templates/codex-templates.cjs +40 -0
  133. package/lib/mcp/templates/codex-templates.d.ts +3 -0
  134. package/lib/mcp/templates/index.cjs +76 -0
  135. package/lib/mcp/templates/index.d.ts +71 -0
  136. package/lib/mcp/templates/resource-templates.cjs +67 -0
  137. package/lib/mcp/templates/resource-templates.d.ts +3 -0
  138. package/lib/mcp/templates/workspace-templates.cjs +70 -0
  139. package/lib/mcp/templates/workspace-templates.d.ts +3 -0
  140. package/lib/mcp/tools/codex-tools.cjs +250 -0
  141. package/lib/mcp/tools/codex-tools.d.ts +5 -0
  142. package/lib/mcp/tools/generateMcpModule.cjs +139 -0
  143. package/lib/mcp/tools/generateMcpModule.d.ts +9 -0
  144. package/lib/mcp/tools/index.cjs +46 -0
  145. package/lib/mcp/tools/index.d.ts +321 -0
  146. package/lib/mcp/tools/tools.cjs +282 -0
  147. package/lib/mcp/tools/tools.d.ts +10 -0
  148. package/lib/mcp/types.cjs +3 -0
  149. package/lib/mcp/types.d.ts +66 -0
  150. package/lib/mcp/utils.cjs +54 -0
  151. package/lib/mcp/utils.d.ts +4 -0
  152. package/lib/mcp/validation/index.cjs +123 -0
  153. package/lib/mcp/validation/index.d.ts +13 -0
  154. package/lib/mcp/validation/scaffoldModule.cjs +94 -0
  155. package/lib/mcp/validation/scaffoldModule.d.ts +9 -0
  156. package/lib/mcp/workspace.cjs +119 -0
  157. package/lib/mcp/workspace.d.ts +9 -0
  158. package/lib/metadata.cjs +1 -1
  159. package/lib/metadata.d.ts +1 -1
  160. package/lib/modules/_template/index.cjs +23 -0
  161. package/lib/modules/_template/index.d.ts +32 -0
  162. package/lib/modules/_template/prompts/index.cjs +12 -0
  163. package/lib/modules/_template/prompts/index.d.ts +6 -0
  164. package/lib/modules/_template/resources/index.cjs +12 -0
  165. package/lib/modules/_template/resources/index.d.ts +6 -0
  166. package/lib/modules/_template/templates/index.cjs +13 -0
  167. package/lib/modules/_template/templates/index.d.ts +7 -0
  168. package/lib/modules/_template/tools/index.cjs +18 -0
  169. package/lib/modules/_template/tools/index.d.ts +6 -0
  170. package/lib/modules/decoration/index.cjs +16 -1
  171. package/lib/modules/decoration/index.d.ts +46 -0
  172. package/lib/modules/decoration/prompts/index.cjs +5 -0
  173. package/lib/modules/decoration/prompts/index.d.ts +1 -0
  174. package/lib/modules/decoration/resources/index.cjs +13 -0
  175. package/lib/modules/decoration/resources/index.d.ts +7 -0
  176. package/lib/modules/decoration/templates/index.cjs +12 -0
  177. package/lib/modules/decoration/templates/index.d.ts +6 -0
  178. package/lib/modules/decoration/tools/index.cjs +10 -0
  179. package/lib/modules/decoration/tools/index.d.ts +26 -0
  180. package/lib/modules/index.cjs +13 -0
  181. package/lib/modules/index.d.ts +2 -0
  182. package/lib/modules/mcp/decoration-assist.cjs +13 -0
  183. package/lib/modules/mcp/decoration-assist.d.ts +4 -0
  184. package/lib/modules/mcp/index.cjs +21 -22
  185. package/lib/modules/mcp/index.d.ts +6 -2
  186. package/lib/modules/mcp/prompts/index.cjs +12 -0
  187. package/lib/modules/mcp/prompts/index.d.ts +2 -0
  188. package/lib/modules/mcp/resources/index.cjs +27 -0
  189. package/lib/modules/mcp/resources/index.d.ts +2 -0
  190. package/lib/modules/mcp/templates/index.cjs +31 -0
  191. package/lib/modules/mcp/templates/index.d.ts +2 -0
  192. package/lib/modules/mcp/tools/index.cjs +18 -0
  193. package/lib/modules/mcp/tools/index.d.ts +6 -0
  194. package/lib/types.cjs +1 -1
  195. package/lib/types.d.ts +41 -1
  196. package/lib/utils/modulePaths.cjs +43 -0
  197. package/lib/utils/modulePaths.d.ts +6 -0
  198. package/lib/utils/moduleValidator.cjs +184 -0
  199. package/lib/utils/moduleValidator.d.ts +14 -0
  200. package/lib/utils.cjs +5 -1
  201. package/lib/utils.d.ts +1 -0
  202. package/package.json +18 -12
  203. package/lib/esm/modules/decoration-assist/index.d.ts +0 -39
  204. package/lib/esm/modules/decoration-assist/index.js +0 -353
  205. package/lib/esm/modules/mcp/decorator-tools.js +0 -237
  206. package/lib/esm/modules/mcp/mcp-module.d.ts +0 -230
  207. package/lib/esm/modules/mcp/mcp-module.js +0 -406
  208. package/lib/modules/decoration-assist/index.cjs +0 -360
  209. package/lib/modules/decoration-assist/index.d.ts +0 -39
  210. package/lib/modules/mcp/decorator-tools.cjs +0 -243
  211. package/lib/modules/mcp/mcp-module.cjs +0 -452
  212. package/lib/modules/mcp/mcp-module.d.ts +0 -230
  213. /package/lib/esm/{modules/mcp → mcp}/decorator-tools.d.ts +0 -0
  214. /package/lib/{modules/mcp → mcp}/decorator-tools.d.ts +0 -0
@@ -0,0 +1,88 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ const DEFAULT_PLACEHOLDERS = {
4
+ prompts: `export const promptList = [
5
+ {
6
+ id: "example-prompt",
7
+ title: "Example prompt",
8
+ description: "A placeholder prompt created by scaffoldModule",
9
+ content: "Describe the task for the assistant...",
10
+ absolutePath: __filename,
11
+ },
12
+ ] as const;
13
+ `,
14
+ resources: `export const resources = [
15
+ {
16
+ id: "example-resource",
17
+ name: "Example Resource",
18
+ description: "A placeholder resource created by scaffoldModule",
19
+ uri: "file://placeholder",
20
+ absolutePath: __filename,
21
+ },
22
+ ] as const;
23
+ `,
24
+ templates: `export const templates = [
25
+ {
26
+ name: "example-template",
27
+ description: "A placeholder template created by scaffoldModule",
28
+ uriTemplate: "file://template/{path}",
29
+ mimeType: "text/plain",
30
+ },
31
+ ] as const;
32
+ `,
33
+ tools: `export const toolList = [
34
+ {
35
+ id: "example-tool",
36
+ name: "example-tool",
37
+ description: "A placeholder tool created by scaffoldModule",
38
+ run: async () => ({ result: "placeholder" }),
39
+ },
40
+ ] as const;
41
+ `,
42
+ };
43
+ /**
44
+ * Create a module scaffold under repoRoot/src/modules/<moduleName>
45
+ * Returns created files list.
46
+ */
47
+ export function scaffoldModule(repoRoot, moduleName) {
48
+ if (!repoRoot)
49
+ throw new Error("repoRoot is required");
50
+ if (!moduleName)
51
+ throw new Error("moduleName is required");
52
+ const modulePath = path.join(repoRoot, "src", "modules", moduleName);
53
+ const createdFiles = [];
54
+ const subfolders = ["prompts", "resources", "templates", "tools"];
55
+ for (const folder of subfolders) {
56
+ const folderPath = path.join(modulePath, folder);
57
+ fs.mkdirSync(folderPath, { recursive: true });
58
+ const indexPath = path.join(folderPath, "index.ts");
59
+ // if file exists, skip writing
60
+ if (!fs.existsSync(indexPath)) {
61
+ // insert __filename for absolutePath in placeholders
62
+ const content = DEFAULT_PLACEHOLDERS[folder].replace(/__filename/g, JSON.stringify(indexPath));
63
+ fs.writeFileSync(indexPath, content, { encoding: "utf8" });
64
+ createdFiles.push(indexPath);
65
+ }
66
+ }
67
+ return { modulePath, createdFiles };
68
+ }
69
+ // CLI support when required directly via ts-node registration
70
+ if (require.main === module) {
71
+ const [, , moduleName] = process.argv;
72
+ if (!moduleName) {
73
+ console.error("Usage: scaffold-module <module-name>");
74
+ process.exit(1);
75
+ }
76
+ try {
77
+ const res = scaffoldModule(process.cwd(), moduleName);
78
+ console.log("Scaffolded module:", res.modulePath);
79
+ for (const f of res.createdFiles)
80
+ console.log(" created:", f);
81
+ process.exit(0);
82
+ }
83
+ catch (err) {
84
+ console.error(err && err.message ? err.message : err);
85
+ process.exit(2);
86
+ }
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhZmZvbGRNb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWNwL3ZhbGlkYXRpb24vc2NhZmZvbGRNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQU94QixNQUFNLG9CQUFvQixHQUFHO0lBQzNCLE9BQU8sRUFBRTs7Ozs7Ozs7O0NBU1Y7SUFDQyxTQUFTLEVBQUU7Ozs7Ozs7OztDQVNaO0lBQ0MsU0FBUyxFQUFFOzs7Ozs7OztDQVFaO0lBQ0MsS0FBSyxFQUFFOzs7Ozs7OztDQVFSO0NBQ0EsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLFFBQWdCLEVBQ2hCLFVBQWtCO0lBRWxCLElBQUksQ0FBQyxRQUFRO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxVQUFVO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBRTNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQWEsRUFBRSxDQUFDO0lBRWxDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFbEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELCtCQUErQjtRQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzlCLHFEQUFxRDtZQUNyRCxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FDbEMsTUFBMkMsQ0FDNUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNwRCxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMzRCxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsOERBQThEO0FBQzlELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUM1QixNQUFNLENBQUMsRUFBRSxBQUFELEVBQUcsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUN0QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmV4cG9ydCB0eXBlIFNjYWZmb2xkUmVzdWx0ID0ge1xuICBtb2R1bGVQYXRoOiBzdHJpbmc7XG4gIGNyZWF0ZWRGaWxlczogc3RyaW5nW107XG59O1xuXG5jb25zdCBERUZBVUxUX1BMQUNFSE9MREVSUyA9IHtcbiAgcHJvbXB0czogYGV4cG9ydCBjb25zdCBwcm9tcHRMaXN0ID0gW1xuICB7XG4gICAgaWQ6IFwiZXhhbXBsZS1wcm9tcHRcIixcbiAgICB0aXRsZTogXCJFeGFtcGxlIHByb21wdFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgcGxhY2Vob2xkZXIgcHJvbXB0IGNyZWF0ZWQgYnkgc2NhZmZvbGRNb2R1bGVcIixcbiAgICBjb250ZW50OiBcIkRlc2NyaWJlIHRoZSB0YXNrIGZvciB0aGUgYXNzaXN0YW50Li4uXCIsXG4gICAgYWJzb2x1dGVQYXRoOiBfX2ZpbGVuYW1lLFxuICB9LFxuXSBhcyBjb25zdDtcbmAsXG4gIHJlc291cmNlczogYGV4cG9ydCBjb25zdCByZXNvdXJjZXMgPSBbXG4gIHtcbiAgICBpZDogXCJleGFtcGxlLXJlc291cmNlXCIsXG4gICAgbmFtZTogXCJFeGFtcGxlIFJlc291cmNlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBwbGFjZWhvbGRlciByZXNvdXJjZSBjcmVhdGVkIGJ5IHNjYWZmb2xkTW9kdWxlXCIsXG4gICAgdXJpOiBcImZpbGU6Ly9wbGFjZWhvbGRlclwiLFxuICAgIGFic29sdXRlUGF0aDogX19maWxlbmFtZSxcbiAgfSxcbl0gYXMgY29uc3Q7XG5gLFxuICB0ZW1wbGF0ZXM6IGBleHBvcnQgY29uc3QgdGVtcGxhdGVzID0gW1xuICB7XG4gICAgbmFtZTogXCJleGFtcGxlLXRlbXBsYXRlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBwbGFjZWhvbGRlciB0ZW1wbGF0ZSBjcmVhdGVkIGJ5IHNjYWZmb2xkTW9kdWxlXCIsXG4gICAgdXJpVGVtcGxhdGU6IFwiZmlsZTovL3RlbXBsYXRlL3twYXRofVwiLFxuICAgIG1pbWVUeXBlOiBcInRleHQvcGxhaW5cIixcbiAgfSxcbl0gYXMgY29uc3Q7XG5gLFxuICB0b29sczogYGV4cG9ydCBjb25zdCB0b29sTGlzdCA9IFtcbiAge1xuICAgIGlkOiBcImV4YW1wbGUtdG9vbFwiLFxuICAgIG5hbWU6IFwiZXhhbXBsZS10b29sXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBwbGFjZWhvbGRlciB0b29sIGNyZWF0ZWQgYnkgc2NhZmZvbGRNb2R1bGVcIixcbiAgICBydW46IGFzeW5jICgpID0+ICh7IHJlc3VsdDogXCJwbGFjZWhvbGRlclwiIH0pLFxuICB9LFxuXSBhcyBjb25zdDtcbmAsXG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG1vZHVsZSBzY2FmZm9sZCB1bmRlciByZXBvUm9vdC9zcmMvbW9kdWxlcy88bW9kdWxlTmFtZT5cbiAqIFJldHVybnMgY3JlYXRlZCBmaWxlcyBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NhZmZvbGRNb2R1bGUoXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4gIG1vZHVsZU5hbWU6IHN0cmluZ1xuKTogU2NhZmZvbGRSZXN1bHQge1xuICBpZiAoIXJlcG9Sb290KSB0aHJvdyBuZXcgRXJyb3IoXCJyZXBvUm9vdCBpcyByZXF1aXJlZFwiKTtcbiAgaWYgKCFtb2R1bGVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJtb2R1bGVOYW1lIGlzIHJlcXVpcmVkXCIpO1xuXG4gIGNvbnN0IG1vZHVsZVBhdGggPSBwYXRoLmpvaW4ocmVwb1Jvb3QsIFwic3JjXCIsIFwibW9kdWxlc1wiLCBtb2R1bGVOYW1lKTtcbiAgY29uc3QgY3JlYXRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0IHN1YmZvbGRlcnMgPSBbXCJwcm9tcHRzXCIsIFwicmVzb3VyY2VzXCIsIFwidGVtcGxhdGVzXCIsIFwidG9vbHNcIl07XG5cbiAgZm9yIChjb25zdCBmb2xkZXIgb2Ygc3ViZm9sZGVycykge1xuICAgIGNvbnN0IGZvbGRlclBhdGggPSBwYXRoLmpvaW4obW9kdWxlUGF0aCwgZm9sZGVyKTtcbiAgICBmcy5ta2RpclN5bmMoZm9sZGVyUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgY29uc3QgaW5kZXhQYXRoID0gcGF0aC5qb2luKGZvbGRlclBhdGgsIFwiaW5kZXgudHNcIik7XG4gICAgLy8gaWYgZmlsZSBleGlzdHMsIHNraXAgd3JpdGluZ1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhpbmRleFBhdGgpKSB7XG4gICAgICAvLyBpbnNlcnQgX19maWxlbmFtZSBmb3IgYWJzb2x1dGVQYXRoIGluIHBsYWNlaG9sZGVyc1xuICAgICAgY29uc3QgY29udGVudCA9IERFRkFVTFRfUExBQ0VIT0xERVJTW1xuICAgICAgICBmb2xkZXIgYXMga2V5b2YgdHlwZW9mIERFRkFVTFRfUExBQ0VIT0xERVJTXG4gICAgICBdLnJlcGxhY2UoL19fZmlsZW5hbWUvZywgSlNPTi5zdHJpbmdpZnkoaW5kZXhQYXRoKSk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGluZGV4UGF0aCwgY29udGVudCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSk7XG4gICAgICBjcmVhdGVkRmlsZXMucHVzaChpbmRleFBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IG1vZHVsZVBhdGgsIGNyZWF0ZWRGaWxlcyB9O1xufVxuXG4vLyBDTEkgc3VwcG9ydCB3aGVuIHJlcXVpcmVkIGRpcmVjdGx5IHZpYSB0cy1ub2RlIHJlZ2lzdHJhdGlvblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IFssICwgbW9kdWxlTmFtZV0gPSBwcm9jZXNzLmFyZ3Y7XG4gIGlmICghbW9kdWxlTmFtZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVc2FnZTogc2NhZmZvbGQtbW9kdWxlIDxtb2R1bGUtbmFtZT5cIik7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gc2NhZmZvbGRNb2R1bGUocHJvY2Vzcy5jd2QoKSwgbW9kdWxlTmFtZSk7XG4gICAgY29uc29sZS5sb2coXCJTY2FmZm9sZGVkIG1vZHVsZTpcIiwgcmVzLm1vZHVsZVBhdGgpO1xuICAgIGZvciAoY29uc3QgZiBvZiByZXMuY3JlYXRlZEZpbGVzKSBjb25zb2xlLmxvZyhcIiAgY3JlYXRlZDpcIiwgZik7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2UgOiBlcnIpO1xuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ export declare class WorkspaceError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare function throwUserError(message: string): Promise<never>;
5
+ export declare function setWorkspaceRoot(root: string): void;
6
+ export declare function getWorkspaceRoot(): string;
7
+ export declare function resolveInWorkspace(root: string, targetPath: string): string;
8
+ export declare function readWorkspaceFile(root: string, target: string): Promise<string>;
9
+ export declare function __resetWorkspaceRoot(root: string): void;
@@ -0,0 +1,73 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { WORKSPACE_ROOT_ENV } from "../constants";
4
+ let workspaceRoot = initializeWorkspaceRoot();
5
+ let userErrorCtor;
6
+ export class WorkspaceError extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = "WorkspaceError";
10
+ }
11
+ }
12
+ function initializeWorkspaceRoot() {
13
+ const configured = process.env[WORKSPACE_ROOT_ENV];
14
+ if (configured && configured.trim().length > 0) {
15
+ return path.resolve(configured.trim());
16
+ }
17
+ return process.cwd();
18
+ }
19
+ async function getUserErrorCtor() {
20
+ if (!userErrorCtor) {
21
+ try {
22
+ const mod = await import("fastmcp");
23
+ userErrorCtor = mod
24
+ .UserError;
25
+ }
26
+ catch {
27
+ userErrorCtor = class MCPUserError extends Error {
28
+ constructor(message) {
29
+ super(message);
30
+ this.name = "MCPUserError";
31
+ }
32
+ };
33
+ }
34
+ }
35
+ return userErrorCtor;
36
+ }
37
+ export async function throwUserError(message) {
38
+ const Ctor = await getUserErrorCtor();
39
+ throw new Ctor(message);
40
+ }
41
+ export function setWorkspaceRoot(root) {
42
+ workspaceRoot = path.resolve(root);
43
+ }
44
+ export function getWorkspaceRoot() {
45
+ return workspaceRoot;
46
+ }
47
+ export function resolveInWorkspace(root, targetPath) {
48
+ const resolved = path.isAbsolute(targetPath)
49
+ ? path.normalize(targetPath)
50
+ : path.resolve(root, targetPath);
51
+ const relative = path.relative(root, resolved);
52
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
53
+ throw new WorkspaceError(`Path ${targetPath} escapes the workspace root at ${root}`);
54
+ }
55
+ return resolved;
56
+ }
57
+ export async function readWorkspaceFile(root, target) {
58
+ try {
59
+ const absolute = resolveInWorkspace(root, target);
60
+ return fs.readFileSync(absolute, "utf8");
61
+ }
62
+ catch (error) {
63
+ if (error instanceof WorkspaceError) {
64
+ await throwUserError(error.message);
65
+ }
66
+ /* istanbul ignore next */
67
+ throw error;
68
+ }
69
+ }
70
+ export function __resetWorkspaceRoot(root) {
71
+ setWorkspaceRoot(root);
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC93b3Jrc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEQsSUFBSSxhQUFhLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztBQUM5QyxJQUFJLGFBQTJELENBQUM7QUFFaEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxLQUFLO0lBQ3ZDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUVELFNBQVMsdUJBQXVCO0lBQzlCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkIsQ0FBQztBQUVELEtBQUssVUFBVSxnQkFBZ0I7SUFDN0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLGFBQWEsR0FBSSxHQUFxRDtpQkFDbkUsU0FBUyxDQUFDO1FBQ2YsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGFBQWEsR0FBRyxNQUFNLFlBQWEsU0FBUSxLQUFLO2dCQUM5QyxZQUFZLE9BQWU7b0JBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztnQkFDN0IsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQ2xELE1BQU0sSUFBSSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztJQUN0QyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBWTtJQUMzQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVksRUFBRSxVQUFrQjtJQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsUUFBUSxVQUFVLGtDQUFrQyxJQUFJLEVBQUUsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsSUFBWSxFQUNaLE1BQWM7SUFFZCxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEQsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUF3QixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxjQUFjLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELDBCQUEwQjtRQUMxQixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQVk7SUFDL0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBXT1JLU1BBQ0VfUk9PVF9FTlYgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmxldCB3b3Jrc3BhY2VSb290ID0gaW5pdGlhbGl6ZVdvcmtzcGFjZVJvb3QoKTtcbmxldCB1c2VyRXJyb3JDdG9yOiAobmV3IChtZXNzYWdlOiBzdHJpbmcpID0+IEVycm9yKSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSBcIldvcmtzcGFjZUVycm9yXCI7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdGlhbGl6ZVdvcmtzcGFjZVJvb3QoKTogc3RyaW5nIHtcbiAgY29uc3QgY29uZmlndXJlZCA9IHByb2Nlc3MuZW52W1dPUktTUEFDRV9ST09UX0VOVl07XG4gIGlmIChjb25maWd1cmVkICYmIGNvbmZpZ3VyZWQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKGNvbmZpZ3VyZWQudHJpbSgpKTtcbiAgfVxuICByZXR1cm4gcHJvY2Vzcy5jd2QoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0VXNlckVycm9yQ3RvcigpOiBQcm9taXNlPG5ldyAobWVzc2FnZTogc3RyaW5nKSA9PiBFcnJvcj4ge1xuICBpZiAoIXVzZXJFcnJvckN0b3IpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kID0gYXdhaXQgaW1wb3J0KFwiZmFzdG1jcFwiKTtcbiAgICAgIHVzZXJFcnJvckN0b3IgPSAobW9kIGFzIHsgVXNlckVycm9yOiBuZXcgKG1lc3NhZ2U6IHN0cmluZykgPT4gRXJyb3IgfSlcbiAgICAgICAgLlVzZXJFcnJvcjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHVzZXJFcnJvckN0b3IgPSBjbGFzcyBNQ1BVc2VyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICAgIHRoaXMubmFtZSA9IFwiTUNQVXNlckVycm9yXCI7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiB1c2VyRXJyb3JDdG9yO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGhyb3dVc2VyRXJyb3IobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxuZXZlcj4ge1xuICBjb25zdCBDdG9yID0gYXdhaXQgZ2V0VXNlckVycm9yQ3RvcigpO1xuICB0aHJvdyBuZXcgQ3RvcihtZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFdvcmtzcGFjZVJvb3Qocm9vdDogc3RyaW5nKSB7XG4gIHdvcmtzcGFjZVJvb3QgPSBwYXRoLnJlc29sdmUocm9vdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VSb290KCk6IHN0cmluZyB7XG4gIHJldHVybiB3b3Jrc3BhY2VSb290O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUluV29ya3NwYWNlKHJvb3Q6IHN0cmluZywgdGFyZ2V0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSBwYXRoLmlzQWJzb2x1dGUodGFyZ2V0UGF0aClcbiAgICA/IHBhdGgubm9ybWFsaXplKHRhcmdldFBhdGgpXG4gICAgOiBwYXRoLnJlc29sdmUocm9vdCwgdGFyZ2V0UGF0aCk7XG5cbiAgY29uc3QgcmVsYXRpdmUgPSBwYXRoLnJlbGF0aXZlKHJvb3QsIHJlc29sdmVkKTtcbiAgaWYgKHJlbGF0aXZlLnN0YXJ0c1dpdGgoXCIuLlwiKSB8fCBwYXRoLmlzQWJzb2x1dGUocmVsYXRpdmUpKSB7XG4gICAgdGhyb3cgbmV3IFdvcmtzcGFjZUVycm9yKFxuICAgICAgYFBhdGggJHt0YXJnZXRQYXRofSBlc2NhcGVzIHRoZSB3b3Jrc3BhY2Ugcm9vdCBhdCAke3Jvb3R9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkV29ya3NwYWNlRmlsZShcbiAgcm9vdDogc3RyaW5nLFxuICB0YXJnZXQ6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhYnNvbHV0ZSA9IHJlc29sdmVJbldvcmtzcGFjZShyb290LCB0YXJnZXQpO1xuICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoYWJzb2x1dGUsIFwidXRmOFwiIGFzIEJ1ZmZlckVuY29kaW5nKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBXb3Jrc3BhY2VFcnJvcikge1xuICAgICAgYXdhaXQgdGhyb3dVc2VyRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzZXRXb3Jrc3BhY2VSb290KHJvb3Q6IHN0cmluZykge1xuICBzZXRXb3Jrc3BhY2VSb290KHJvb3QpO1xufVxuIl19
@@ -5,5 +5,5 @@
5
5
  * @summary The actual version number is replaced during the build process.
6
6
  * @type {string}
7
7
  */
8
- export declare const VERSION = "0.0.2";
8
+ export declare const VERSION = "0.1.0";
9
9
  export declare const PACKAGE_NAME = "##PACKAGE_NAME##";
@@ -6,7 +6,7 @@ import { Metadata } from "@decaf-ts/decoration";
6
6
  * @summary The actual version number is replaced during the build process.
7
7
  * @type {string}
8
8
  */
9
- export const VERSION = "0.0.2";
9
+ export const VERSION = "0.1.0";
10
10
  export const PACKAGE_NAME = "##PACKAGE_NAME##";
11
11
  try {
12
12
  Metadata.registerLibrary(PACKAGE_NAME, VERSION);
@@ -0,0 +1,32 @@
1
+ export { prompts } from "./prompts";
2
+ export { resources } from "./resources";
3
+ export { templates } from "./templates";
4
+ export { tools } from "./tools";
5
+ export declare const modulePackage: {
6
+ readonly name: "_template";
7
+ readonly prompts: readonly [{
8
+ readonly id: "_template.readme";
9
+ readonly title: "Template README";
10
+ readonly description: "A README prompt for module template";
11
+ readonly load: () => string;
12
+ }];
13
+ readonly resources: readonly [{
14
+ readonly id: "_template.repo";
15
+ readonly name: "template repo";
16
+ readonly description: "Template resource";
17
+ readonly uri: "file:///tmp/template";
18
+ }];
19
+ readonly templates: readonly [{
20
+ readonly id: "_template.readme";
21
+ readonly name: "template-readme";
22
+ readonly description: "README guidance";
23
+ readonly uriTemplate: "file:///tmp/template/README.md";
24
+ readonly mimeType: "text/markdown";
25
+ }];
26
+ readonly tools: readonly [{
27
+ readonly id: "_template.tool";
28
+ readonly title: "template tool";
29
+ readonly description: "A placeholder tool";
30
+ readonly tool: any;
31
+ }];
32
+ };
@@ -0,0 +1,16 @@
1
+ import { prompts } from "./prompts";
2
+ import { resources } from "./resources";
3
+ import { templates } from "./templates";
4
+ import { tools } from "./tools";
5
+ export { prompts } from "./prompts";
6
+ export { resources } from "./resources";
7
+ export { templates } from "./templates";
8
+ export { tools } from "./tools";
9
+ export const modulePackage = {
10
+ name: "_template",
11
+ prompts,
12
+ resources,
13
+ templates,
14
+ tools,
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9fdGVtcGxhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixJQUFJLEVBQUUsV0FBVztJQUNqQixPQUFPO0lBQ1AsU0FBUztJQUNULFNBQVM7SUFDVCxLQUFLO0NBQ0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21wdHMgfSBmcm9tIFwiLi9wcm9tcHRzXCI7XG5pbXBvcnQgeyByZXNvdXJjZXMgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IHRlbXBsYXRlcyB9IGZyb20gXCIuL3RlbXBsYXRlc1wiO1xuaW1wb3J0IHsgdG9vbHMgfSBmcm9tIFwiLi90b29sc1wiO1xuZXhwb3J0IHsgcHJvbXB0cyB9IGZyb20gXCIuL3Byb21wdHNcIjtcbmV4cG9ydCB7IHJlc291cmNlcyB9IGZyb20gXCIuL3Jlc291cmNlc1wiO1xuZXhwb3J0IHsgdGVtcGxhdGVzIH0gZnJvbSBcIi4vdGVtcGxhdGVzXCI7XG5leHBvcnQgeyB0b29scyB9IGZyb20gXCIuL3Rvb2xzXCI7XG5leHBvcnQgY29uc3QgbW9kdWxlUGFja2FnZSA9IHtcbiAgbmFtZTogXCJfdGVtcGxhdGVcIixcbiAgcHJvbXB0cyxcbiAgcmVzb3VyY2VzLFxuICB0ZW1wbGF0ZXMsXG4gIHRvb2xzLFxufSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export declare const prompts: readonly [{
2
+ readonly id: "_template.readme";
3
+ readonly title: "Template README";
4
+ readonly description: "A README prompt for module template";
5
+ readonly load: () => string;
6
+ }];
@@ -0,0 +1,9 @@
1
+ export const prompts = [
2
+ {
3
+ id: "_template.readme",
4
+ title: "Template README",
5
+ description: "A README prompt for module template",
6
+ load: () => "Template prompt content",
7
+ },
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9fdGVtcGxhdGUvcHJvbXB0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckI7UUFDRSxFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsV0FBVyxFQUFFLHFDQUFxQztRQUNsRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCO0tBQ3RDO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcm9tcHRzID0gW1xuICB7XG4gICAgaWQ6IFwiX3RlbXBsYXRlLnJlYWRtZVwiLFxuICAgIHRpdGxlOiBcIlRlbXBsYXRlIFJFQURNRVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgUkVBRE1FIHByb21wdCBmb3IgbW9kdWxlIHRlbXBsYXRlXCIsXG4gICAgbG9hZDogKCkgPT4gXCJUZW1wbGF0ZSBwcm9tcHQgY29udGVudFwiLFxuICB9LFxuXSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export declare const resources: readonly [{
2
+ readonly id: "_template.repo";
3
+ readonly name: "template repo";
4
+ readonly description: "Template resource";
5
+ readonly uri: "file:///tmp/template";
6
+ }];
@@ -0,0 +1,9 @@
1
+ export const resources = [
2
+ {
3
+ id: "_template.repo",
4
+ name: "template repo",
5
+ description: "Template resource",
6
+ uri: "file:///tmp/template",
7
+ },
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9fdGVtcGxhdGUvcmVzb3VyY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QjtRQUNFLEVBQUUsRUFBRSxnQkFBZ0I7UUFDcEIsSUFBSSxFQUFFLGVBQWU7UUFDckIsV0FBVyxFQUFFLG1CQUFtQjtRQUNoQyxHQUFHLEVBQUUsc0JBQXNCO0tBQzVCO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByZXNvdXJjZXMgPSBbXG4gIHtcbiAgICBpZDogXCJfdGVtcGxhdGUucmVwb1wiLFxuICAgIG5hbWU6IFwidGVtcGxhdGUgcmVwb1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRlbXBsYXRlIHJlc291cmNlXCIsXG4gICAgdXJpOiBcImZpbGU6Ly8vdG1wL3RlbXBsYXRlXCIsXG4gIH0sXG5dIGFzIGNvbnN0O1xuIl19
@@ -0,0 +1,7 @@
1
+ export declare const templates: readonly [{
2
+ readonly id: "_template.readme";
3
+ readonly name: "template-readme";
4
+ readonly description: "README guidance";
5
+ readonly uriTemplate: "file:///tmp/template/README.md";
6
+ readonly mimeType: "text/markdown";
7
+ }];
@@ -0,0 +1,10 @@
1
+ export const templates = [
2
+ {
3
+ id: "_template.readme",
4
+ name: "template-readme",
5
+ description: "README guidance",
6
+ uriTemplate: "file:///tmp/template/README.md",
7
+ mimeType: "text/markdown",
8
+ },
9
+ ];
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9fdGVtcGxhdGUvdGVtcGxhdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QjtRQUNFLEVBQUUsRUFBRSxrQkFBa0I7UUFDdEIsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLFdBQVcsRUFBRSxnQ0FBZ0M7UUFDN0MsUUFBUSxFQUFFLGVBQWU7S0FDMUI7Q0FDTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRlbXBsYXRlcyA9IFtcbiAge1xuICAgIGlkOiBcIl90ZW1wbGF0ZS5yZWFkbWVcIixcbiAgICBuYW1lOiBcInRlbXBsYXRlLXJlYWRtZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJFQURNRSBndWlkYW5jZVwiLFxuICAgIHVyaVRlbXBsYXRlOiBcImZpbGU6Ly8vdG1wL3RlbXBsYXRlL1JFQURNRS5tZFwiLFxuICAgIG1pbWVUeXBlOiBcInRleHQvbWFya2Rvd25cIixcbiAgfSxcbl0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export declare const tools: readonly [{
2
+ readonly id: "_template.tool";
3
+ readonly title: "template tool";
4
+ readonly description: "A placeholder tool";
5
+ readonly tool: any;
6
+ }];
@@ -0,0 +1,15 @@
1
+ const placeholderTool = {
2
+ name: "_template.tool",
3
+ description: "A placeholder tool",
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
+ execute: async (_input, _context) => "ok",
6
+ };
7
+ export const tools = [
8
+ {
9
+ id: "_template.tool",
10
+ title: "template tool",
11
+ description: "A placeholder tool",
12
+ tool: placeholderTool,
13
+ },
14
+ ];
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9fdGVtcGxhdGUvdG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxlQUFlLEdBQVE7SUFDM0IsSUFBSSxFQUFFLGdCQUFnQjtJQUN0QixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLDZEQUE2RDtJQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxRQUFhLEVBQW1CLEVBQUUsQ0FBQyxJQUFJO0NBQ3JFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkI7UUFDRSxFQUFFLEVBQUUsZ0JBQWdCO1FBQ3BCLEtBQUssRUFBRSxlQUFlO1FBQ3RCLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsSUFBSSxFQUFFLGVBQWU7S0FDdEI7Q0FDTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGxhY2Vob2xkZXJUb29sOiBhbnkgPSB7XG4gIG5hbWU6IFwiX3RlbXBsYXRlLnRvb2xcIixcbiAgZGVzY3JpcHRpb246IFwiQSBwbGFjZWhvbGRlciB0b29sXCIsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgZXhlY3V0ZTogYXN5bmMgKF9pbnB1dDogYW55LCBfY29udGV4dDogYW55KTogUHJvbWlzZTxzdHJpbmc+ID0+IFwib2tcIixcbn07XG5cbmV4cG9ydCBjb25zdCB0b29scyA9IFtcbiAge1xuICAgIGlkOiBcIl90ZW1wbGF0ZS50b29sXCIsXG4gICAgdGl0bGU6IFwidGVtcGxhdGUgdG9vbFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgcGxhY2Vob2xkZXIgdG9vbFwiLFxuICAgIHRvb2w6IHBsYWNlaG9sZGVyVG9vbCxcbiAgfSxcbl0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,46 @@
1
+ export { prompts } from './prompts';
2
+ export { resources } from './resources';
3
+ export { templates } from './templates';
4
+ export { tools } from './tools';
5
+ export declare const modulePackage: {
6
+ readonly name: "decoration";
7
+ readonly prompts: readonly [];
8
+ readonly resources: readonly [{
9
+ readonly id: "decoration.repo";
10
+ readonly name: "decoration repository";
11
+ readonly description: "Source repository";
12
+ readonly uri: "file:///home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration";
13
+ readonly absolutePath: "/home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration";
14
+ }];
15
+ readonly templates: readonly [{
16
+ readonly name: "readme-template";
17
+ readonly description: "README as guidance";
18
+ readonly uriTemplate: "file:///home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration/README.md";
19
+ readonly mimeType: "text/markdown";
20
+ }];
21
+ readonly tools: readonly [{
22
+ readonly id: "decoration.analyze";
23
+ readonly title: "Analyze decoration";
24
+ readonly description: "Analyze the target repository";
25
+ readonly tool: import("fastmcp").Tool<undefined, import("zod").ZodObject<{
26
+ repoPath: import("zod").ZodString;
27
+ includeTests: import("zod").ZodDefault<import("zod").ZodBoolean>;
28
+ includeDocs: import("zod").ZodDefault<import("zod").ZodBoolean>;
29
+ }, import("zod/v4/core").$strict>>;
30
+ }, {
31
+ readonly id: "decoration.enumerate";
32
+ readonly title: "Enumerate capabilities for decoration";
33
+ readonly description: "Enumerate capabilities";
34
+ readonly tool: import("fastmcp").Tool<undefined, import("zod").ZodObject<{
35
+ repoPath: import("zod").ZodString;
36
+ }, import("zod/v4/core").$strict>>;
37
+ }, {
38
+ readonly id: "decoration.plan";
39
+ readonly title: "Plan features for decoration";
40
+ readonly description: "Plan feature implementation";
41
+ readonly tool: import("fastmcp").Tool<undefined, import("zod").ZodObject<{
42
+ feature: import("zod").ZodString;
43
+ repoPath: import("zod").ZodDefault<import("zod").ZodString>;
44
+ }, import("zod/v4/core").$strict>>;
45
+ }];
46
+ };
@@ -1,2 +1,10 @@
1
- "use strict";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIiXX0=
1
+ import { prompts } from './prompts';
2
+ import { resources } from './resources';
3
+ import { templates } from './templates';
4
+ import { tools } from './tools';
5
+ export { prompts } from './prompts';
6
+ export { resources } from './resources';
7
+ export { templates } from './templates';
8
+ export { tools } from './tools';
9
+ export const modulePackage = { name: 'decoration', prompts, resources, templates, tools };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbXB0cyB9IGZyb20gJy4vcHJvbXB0cyc7XG5pbXBvcnQgeyByZXNvdXJjZXMgfSBmcm9tICcuL3Jlc291cmNlcyc7XG5pbXBvcnQgeyB0ZW1wbGF0ZXMgfSBmcm9tICcuL3RlbXBsYXRlcyc7XG5pbXBvcnQgeyB0b29scyB9IGZyb20gJy4vdG9vbHMnO1xuZXhwb3J0IHsgcHJvbXB0cyB9IGZyb20gJy4vcHJvbXB0cyc7XG5leHBvcnQgeyByZXNvdXJjZXMgfSBmcm9tICcuL3Jlc291cmNlcyc7XG5leHBvcnQgeyB0ZW1wbGF0ZXMgfSBmcm9tICcuL3RlbXBsYXRlcyc7XG5leHBvcnQgeyB0b29scyB9IGZyb20gJy4vdG9vbHMnO1xuZXhwb3J0IGNvbnN0IG1vZHVsZVBhY2thZ2UgPSB7IG5hbWU6ICdkZWNvcmF0aW9uJywgcHJvbXB0cywgcmVzb3VyY2VzLCB0ZW1wbGF0ZXMsIHRvb2xzIH0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1 @@
1
+ export declare const prompts: readonly [];
@@ -0,0 +1,2 @@
1
+ export const prompts = [];
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL3Byb21wdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcm9tcHRzID0gW10gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export declare const resources: readonly [{
2
+ readonly id: "decoration.repo";
3
+ readonly name: "decoration repository";
4
+ readonly description: "Source repository";
5
+ readonly uri: "file:///home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration";
6
+ readonly absolutePath: "/home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration";
7
+ }];
@@ -0,0 +1,10 @@
1
+ export const resources = [
2
+ {
3
+ "id": "decoration.repo",
4
+ "name": "decoration repository",
5
+ "description": "Source repository",
6
+ "uri": "file:///home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration",
7
+ "absolutePath": "/home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration"
8
+ }
9
+ ];
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL3Jlc291cmNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkI7UUFDRSxJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsYUFBYSxFQUFFLG1CQUFtQjtRQUNsQyxLQUFLLEVBQUUsb0ZBQW9GO1FBQzNGLGNBQWMsRUFBRSw2RUFBNkU7S0FDOUY7Q0FDTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJlc291cmNlcyA9IFtcbiAge1xuICAgIFwiaWRcIjogXCJkZWNvcmF0aW9uLnJlcG9cIixcbiAgICBcIm5hbWVcIjogXCJkZWNvcmF0aW9uIHJlcG9zaXRvcnlcIixcbiAgICBcImRlc2NyaXB0aW9uXCI6IFwiU291cmNlIHJlcG9zaXRvcnlcIixcbiAgICBcInVyaVwiOiBcImZpbGU6Ly8vaG9tZS90dmVuY2VzbGF1L2xvY2FsLXdvcmtzcGFjZS9kZWNhZi10cy9tY3Atc2VydmVyL3NyYy9tb2R1bGVzL2RlY29yYXRpb25cIixcbiAgICBcImFic29sdXRlUGF0aFwiOiBcIi9ob21lL3R2ZW5jZXNsYXUvbG9jYWwtd29ya3NwYWNlL2RlY2FmLXRzL21jcC1zZXJ2ZXIvc3JjL21vZHVsZXMvZGVjb3JhdGlvblwiXG4gIH1cbl0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export declare const templates: readonly [{
2
+ readonly name: "readme-template";
3
+ readonly description: "README as guidance";
4
+ readonly uriTemplate: "file:///home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration/README.md";
5
+ readonly mimeType: "text/markdown";
6
+ }];
@@ -0,0 +1,9 @@
1
+ export const templates = [
2
+ {
3
+ "name": "readme-template",
4
+ "description": "README as guidance",
5
+ "uriTemplate": "file:///home/tvenceslau/local-workspace/decaf-ts/mcp-server/src/modules/decoration/README.md",
6
+ "mimeType": "text/markdown"
7
+ }
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL3RlbXBsYXRlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkI7UUFDRSxNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLGFBQWEsRUFBRSxvQkFBb0I7UUFDbkMsYUFBYSxFQUFFLDhGQUE4RjtRQUM3RyxVQUFVLEVBQUUsZUFBZTtLQUM1QjtDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdGVtcGxhdGVzID0gW1xuICB7XG4gICAgXCJuYW1lXCI6IFwicmVhZG1lLXRlbXBsYXRlXCIsXG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIlJFQURNRSBhcyBndWlkYW5jZVwiLFxuICAgIFwidXJpVGVtcGxhdGVcIjogXCJmaWxlOi8vL2hvbWUvdHZlbmNlc2xhdS9sb2NhbC13b3Jrc3BhY2UvZGVjYWYtdHMvbWNwLXNlcnZlci9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL1JFQURNRS5tZFwiLFxuICAgIFwibWltZVR5cGVcIjogXCJ0ZXh0L21hcmtkb3duXCJcbiAgfVxuXSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import type { Tool } from 'fastmcp';
2
+ export declare const tools: readonly [{
3
+ readonly id: "decoration.analyze";
4
+ readonly title: "Analyze decoration";
5
+ readonly description: "Analyze the target repository";
6
+ readonly tool: Tool<undefined, import("zod").ZodObject<{
7
+ repoPath: import("zod").ZodString;
8
+ includeTests: import("zod").ZodDefault<import("zod").ZodBoolean>;
9
+ includeDocs: import("zod").ZodDefault<import("zod").ZodBoolean>;
10
+ }, import("zod/v4/core").$strict>>;
11
+ }, {
12
+ readonly id: "decoration.enumerate";
13
+ readonly title: "Enumerate capabilities for decoration";
14
+ readonly description: "Enumerate capabilities";
15
+ readonly tool: Tool<undefined, import("zod").ZodObject<{
16
+ repoPath: import("zod").ZodString;
17
+ }, import("zod/v4/core").$strict>>;
18
+ }, {
19
+ readonly id: "decoration.plan";
20
+ readonly title: "Plan features for decoration";
21
+ readonly description: "Plan feature implementation";
22
+ readonly tool: Tool<undefined, import("zod").ZodObject<{
23
+ feature: import("zod").ZodString;
24
+ repoPath: import("zod").ZodDefault<import("zod").ZodString>;
25
+ }, import("zod/v4/core").$strict>>;
26
+ }];
@@ -0,0 +1,7 @@
1
+ import { buildAnalyzeRepositoryTool, buildEnumerateCapabilitiesTool, buildPlanFeatureTool } from '../../../mcp/tools/tools';
2
+ export const tools = [
3
+ { id: 'decoration.analyze', title: 'Analyze decoration', description: 'Analyze the target repository', tool: buildAnalyzeRepositoryTool() },
4
+ { id: 'decoration.enumerate', title: 'Enumerate capabilities for decoration', description: 'Enumerate capabilities', tool: buildEnumerateCapabilitiesTool() },
5
+ { id: 'decoration.plan', title: 'Plan features for decoration', description: 'Plan feature implementation', tool: buildPlanFeatureTool() },
6
+ ];
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL3Rvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNuQixFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLCtCQUErQixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxFQUFFO0lBQzNJLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSx1Q0FBdUMsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLDhCQUE4QixFQUFFLEVBQUU7SUFDN0osRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLFdBQVcsRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsRUFBRTtDQUNsSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb29sIH0gZnJvbSAnZmFzdG1jcCc7XG5pbXBvcnQgeyBidWlsZEFuYWx5emVSZXBvc2l0b3J5VG9vbCwgYnVpbGRFbnVtZXJhdGVDYXBhYmlsaXRpZXNUb29sLCBidWlsZFBsYW5GZWF0dXJlVG9vbCB9IGZyb20gJy4uLy4uLy4uL21jcC90b29scy90b29scyc7XG5leHBvcnQgY29uc3QgdG9vbHMgPSBbXG4gIHsgaWQ6ICdkZWNvcmF0aW9uLmFuYWx5emUnLCB0aXRsZTogJ0FuYWx5emUgZGVjb3JhdGlvbicsIGRlc2NyaXB0aW9uOiAnQW5hbHl6ZSB0aGUgdGFyZ2V0IHJlcG9zaXRvcnknLCB0b29sOiBidWlsZEFuYWx5emVSZXBvc2l0b3J5VG9vbCgpIH0sXG4gIHsgaWQ6ICdkZWNvcmF0aW9uLmVudW1lcmF0ZScsIHRpdGxlOiAnRW51bWVyYXRlIGNhcGFiaWxpdGllcyBmb3IgZGVjb3JhdGlvbicsIGRlc2NyaXB0aW9uOiAnRW51bWVyYXRlIGNhcGFiaWxpdGllcycsIHRvb2w6IGJ1aWxkRW51bWVyYXRlQ2FwYWJpbGl0aWVzVG9vbCgpIH0sXG4gIHsgaWQ6ICdkZWNvcmF0aW9uLnBsYW4nLCB0aXRsZTogJ1BsYW4gZmVhdHVyZXMgZm9yIGRlY29yYXRpb24nLCBkZXNjcmlwdGlvbjogJ1BsYW4gZmVhdHVyZSBpbXBsZW1lbnRhdGlvbicsIHRvb2w6IGJ1aWxkUGxhbkZlYXR1cmVUb29sKCkgfSxcbl0gYXMgY29uc3Q7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import type { ModuleExportPackage } from "../types";
2
+ export declare const modulePackages: ModuleExportPackage[];
@@ -0,0 +1,10 @@
1
+ import { modulePackage as decorationModule } from "./decoration";
2
+ import { modulePackage as mcpModule } from "./mcp";
3
+ import { modulePackage as templateModule } from "./_template";
4
+ // modulePackage objects may be declared with readonly arrays (as const). Cast to the mutable type expected by runtime APIs.
5
+ export const modulePackages = [
6
+ decorationModule,
7
+ mcpModule,
8
+ templateModule,
9
+ ];
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kdWxlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLElBQUksU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLElBQUksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlELDRIQUE0SDtBQUM1SCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQTBCO0lBQ25ELGdCQUFrRDtJQUNsRCxTQUEyQztJQUMzQyxjQUFnRDtDQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNb2R1bGVFeHBvcnRQYWNrYWdlIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBtb2R1bGVQYWNrYWdlIGFzIGRlY29yYXRpb25Nb2R1bGUgfSBmcm9tIFwiLi9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBtb2R1bGVQYWNrYWdlIGFzIG1jcE1vZHVsZSB9IGZyb20gXCIuL21jcFwiO1xuaW1wb3J0IHsgbW9kdWxlUGFja2FnZSBhcyB0ZW1wbGF0ZU1vZHVsZSB9IGZyb20gXCIuL190ZW1wbGF0ZVwiO1xuXG4vLyBtb2R1bGVQYWNrYWdlIG9iamVjdHMgbWF5IGJlIGRlY2xhcmVkIHdpdGggcmVhZG9ubHkgYXJyYXlzIChhcyBjb25zdCkuIENhc3QgdG8gdGhlIG11dGFibGUgdHlwZSBleHBlY3RlZCBieSBydW50aW1lIEFQSXMuXG5leHBvcnQgY29uc3QgbW9kdWxlUGFja2FnZXM6IE1vZHVsZUV4cG9ydFBhY2thZ2VbXSA9IFtcbiAgZGVjb3JhdGlvbk1vZHVsZSBhcyB1bmtub3duIGFzIE1vZHVsZUV4cG9ydFBhY2thZ2UsXG4gIG1jcE1vZHVsZSBhcyB1bmtub3duIGFzIE1vZHVsZUV4cG9ydFBhY2thZ2UsXG4gIHRlbXBsYXRlTW9kdWxlIGFzIHVua25vd24gYXMgTW9kdWxlRXhwb3J0UGFja2FnZSxcbl07XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import type { FastMCP } from "fastmcp";
2
+ import enrich from "../../mcp/mcp-module";
3
+ export default function decorationAssist(server: FastMCP): FastMCP;
4
+ export { enrich };
@@ -0,0 +1,6 @@
1
+ import enrich from "../../mcp/mcp-module";
2
+ export default function decorationAssist(server) {
3
+ return enrich(server);
4
+ }
5
+ export { enrich };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdGlvbi1hc3Npc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tY3AvZGVjb3JhdGlvbi1hc3Npc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sc0JBQXNCLENBQUM7QUFFMUMsTUFBTSxDQUFDLE9BQU8sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFlO0lBQ3RELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZhc3RNQ1AgfSBmcm9tIFwiZmFzdG1jcFwiO1xuaW1wb3J0IGVucmljaCBmcm9tIFwiLi4vLi4vbWNwL21jcC1tb2R1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVjb3JhdGlvbkFzc2lzdChzZXJ2ZXI6IEZhc3RNQ1ApOiBGYXN0TUNQIHtcbiAgcmV0dXJuIGVucmljaChzZXJ2ZXIpO1xufVxuXG5leHBvcnQgeyBlbnJpY2ggfTtcbiJdfQ==
@@ -1,2 +1,6 @@
1
- export { default } from "./mcp-module";
2
- export * from "./mcp-module";
1
+ import type { ModuleExportPackage } from "../../types";
2
+ export { prompts } from "./prompts";
3
+ export { resources } from "./resources";
4
+ export { templates } from "./templates";
5
+ export { tools } from "./tools";
6
+ export declare const modulePackage: ModuleExportPackage;
@@ -1,3 +1,16 @@
1
- export { default } from "./mcp-module";
2
- export * from "./mcp-module";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tY3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLi9tY3AtbW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tY3AtbW9kdWxlXCI7XG4iXX0=
1
+ import { prompts } from "./prompts";
2
+ import { resources } from "./resources";
3
+ import { templates } from "./templates";
4
+ import { tools } from "./tools";
5
+ export { prompts } from "./prompts";
6
+ export { resources } from "./resources";
7
+ export { templates } from "./templates";
8
+ export { tools } from "./tools";
9
+ export const modulePackage = {
10
+ name: "mcp",
11
+ prompts,
12
+ resources,
13
+ templates,
14
+ tools,
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tY3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBd0I7SUFDaEQsSUFBSSxFQUFFLEtBQUs7SUFDWCxPQUFPO0lBQ1AsU0FBUztJQUNULFNBQVM7SUFDVCxLQUFLO0NBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTW9kdWxlRXhwb3J0UGFja2FnZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgcHJvbXB0cyB9IGZyb20gXCIuL3Byb21wdHNcIjtcbmltcG9ydCB7IHJlc291cmNlcyB9IGZyb20gXCIuL3Jlc291cmNlc1wiO1xuaW1wb3J0IHsgdGVtcGxhdGVzIH0gZnJvbSBcIi4vdGVtcGxhdGVzXCI7XG5pbXBvcnQgeyB0b29scyB9IGZyb20gXCIuL3Rvb2xzXCI7XG5cbmV4cG9ydCB7IHByb21wdHMgfSBmcm9tIFwiLi9wcm9tcHRzXCI7XG5leHBvcnQgeyByZXNvdXJjZXMgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmV4cG9ydCB7IHRlbXBsYXRlcyB9IGZyb20gXCIuL3RlbXBsYXRlc1wiO1xuZXhwb3J0IHsgdG9vbHMgfSBmcm9tIFwiLi90b29sc1wiO1xuXG5leHBvcnQgY29uc3QgbW9kdWxlUGFja2FnZTogTW9kdWxlRXhwb3J0UGFja2FnZSA9IHtcbiAgbmFtZTogXCJtY3BcIixcbiAgcHJvbXB0cyxcbiAgcmVzb3VyY2VzLFxuICB0ZW1wbGF0ZXMsXG4gIHRvb2xzLFxufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import type { PromptAsset } from "../../../types";
2
+ export declare const prompts: PromptAsset[];
@@ -0,0 +1,9 @@
1
+ export const prompts = [
2
+ {
3
+ id: "mcp.prompt.module-catalog",
4
+ title: "Decaf MCP Module Catalog",
5
+ description: "Summarizes the modules contributing prompts/resources/templates/tools to FASTMCP.",
6
+ load: async () => "Use the module catalog tool to enumerate available module assets before fulfilling assistant requests.",
7
+ },
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tY3AvcHJvbXB0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQWtCO0lBQ3BDO1FBQ0UsRUFBRSxFQUFFLDJCQUEyQjtRQUMvQixLQUFLLEVBQUUsMEJBQTBCO1FBQ2pDLFdBQVcsRUFBRSxtRkFBbUY7UUFDaEcsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQ2Ysd0dBQXdHO0tBQzNHO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvbXB0QXNzZXQgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHByb21wdHM6IFByb21wdEFzc2V0W10gPSBbXG4gIHtcbiAgICBpZDogXCJtY3AucHJvbXB0Lm1vZHVsZS1jYXRhbG9nXCIsXG4gICAgdGl0bGU6IFwiRGVjYWYgTUNQIE1vZHVsZSBDYXRhbG9nXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3VtbWFyaXplcyB0aGUgbW9kdWxlcyBjb250cmlidXRpbmcgcHJvbXB0cy9yZXNvdXJjZXMvdGVtcGxhdGVzL3Rvb2xzIHRvIEZBU1RNQ1AuXCIsXG4gICAgbG9hZDogYXN5bmMgKCkgPT5cbiAgICAgIFwiVXNlIHRoZSBtb2R1bGUgY2F0YWxvZyB0b29sIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbW9kdWxlIGFzc2V0cyBiZWZvcmUgZnVsZmlsbGluZyBhc3Npc3RhbnQgcmVxdWVzdHMuXCIsXG4gIH0sXG5dO1xuIl19
@@ -0,0 +1,2 @@
1
+ import type { ResourceAsset } from "../../../types";
2
+ export declare const resources: ResourceAsset[];
@@ -0,0 +1,24 @@
1
+ export const resources = [
2
+ {
3
+ id: "mcp.resource.registry-overview",
4
+ title: "Module Registry Overview",
5
+ description: "Explains how the ModuleRegistry aggregates module exports into FASTMCP catalogs.",
6
+ uri: "decaf://mcp/module-registry",
7
+ mimeType: "text/markdown",
8
+ load: async () => ({
9
+ content: [
10
+ {
11
+ type: "text",
12
+ text: [
13
+ "# Module Registry",
14
+ "",
15
+ "The Decaf MCP server aggregates prompts, resources, templates, and tools from every module under src/modules.",
16
+ "Validators ensure each module contains the canonical folder layout before the registry loads it.",
17
+ ].join("\n"),
18
+ mimeType: "text/markdown",
19
+ },
20
+ ],
21
+ }),
22
+ },
23
+ ];
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tY3AvcmVzb3VyY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBb0I7SUFDeEM7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLEtBQUssRUFBRSwwQkFBMEI7UUFDakMsV0FBVyxFQUNULGtGQUFrRjtRQUNwRixHQUFHLEVBQUUsNkJBQTZCO1FBQ2xDLFFBQVEsRUFBRSxlQUFlO1FBQ3pCLElBQUksRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7WUFDakIsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRTt3QkFDSixtQkFBbUI7d0JBQ25CLEVBQUU7d0JBQ0YsK0dBQStHO3dCQUMvRyxrR0FBa0c7cUJBQ25HLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDWixRQUFRLEVBQUUsZUFBZTtpQkFDMUI7YUFDRjtTQUNGLENBQUM7S0FDSDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlQXNzZXQgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlczogUmVzb3VyY2VBc3NldFtdID0gW1xuICB7XG4gICAgaWQ6IFwibWNwLnJlc291cmNlLnJlZ2lzdHJ5LW92ZXJ2aWV3XCIsXG4gICAgdGl0bGU6IFwiTW9kdWxlIFJlZ2lzdHJ5IE92ZXJ2aWV3XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkV4cGxhaW5zIGhvdyB0aGUgTW9kdWxlUmVnaXN0cnkgYWdncmVnYXRlcyBtb2R1bGUgZXhwb3J0cyBpbnRvIEZBU1RNQ1AgY2F0YWxvZ3MuXCIsXG4gICAgdXJpOiBcImRlY2FmOi8vbWNwL21vZHVsZS1yZWdpc3RyeVwiLFxuICAgIG1pbWVUeXBlOiBcInRleHQvbWFya2Rvd25cIixcbiAgICBsb2FkOiBhc3luYyAoKSA9PiAoe1xuICAgICAgY29udGVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogW1xuICAgICAgICAgICAgXCIjIE1vZHVsZSBSZWdpc3RyeVwiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiVGhlIERlY2FmIE1DUCBzZXJ2ZXIgYWdncmVnYXRlcyBwcm9tcHRzLCByZXNvdXJjZXMsIHRlbXBsYXRlcywgYW5kIHRvb2xzIGZyb20gZXZlcnkgbW9kdWxlIHVuZGVyIHNyYy9tb2R1bGVzLlwiLFxuICAgICAgICAgICAgXCJWYWxpZGF0b3JzIGVuc3VyZSBlYWNoIG1vZHVsZSBjb250YWlucyB0aGUgY2Fub25pY2FsIGZvbGRlciBsYXlvdXQgYmVmb3JlIHRoZSByZWdpc3RyeSBsb2FkcyBpdC5cIixcbiAgICAgICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgbWltZVR5cGU6IFwidGV4dC9tYXJrZG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KSxcbiAgfSxcbl07XG5cbiJdfQ==