@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,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.promptList = void 0;
18
+ exports.loadPrompts = loadPrompts;
19
+ const prompts_1 = require("./prompts.cjs");
20
+ __exportStar(require("./prompts.cjs"), exports);
21
+ exports.promptList = prompts_1.prompts;
22
+ function loadPrompts(repoPath) {
23
+ return (0, prompts_1.refreshPrompts)(repoPath);
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL3Byb21wdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxrQ0FFQztBQVJELDJDQUFvRDtBQUVwRCxnREFBMEI7QUFFYixRQUFBLFVBQVUsR0FBNkIsaUJBQU8sQ0FBQztBQUU1RCxTQUFnQixXQUFXLENBQUMsUUFBaUI7SUFDM0MsT0FBTyxJQUFBLHdCQUFjLEVBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW5wdXRQcm9tcHQgfSBmcm9tIFwiZmFzdG1jcFwiO1xuaW1wb3J0IHsgcHJvbXB0cywgcmVmcmVzaFByb21wdHMgfSBmcm9tIFwiLi9wcm9tcHRzXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL3Byb21wdHNcIjtcblxuZXhwb3J0IGNvbnN0IHByb21wdExpc3Q6IElucHV0UHJvbXB0PHVuZGVmaW5lZD5bXSA9IHByb21wdHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvbXB0cyhyZXBvUGF0aD86IHN0cmluZyk6IElucHV0UHJvbXB0PHVuZGVmaW5lZD5bXSB7XG4gIHJldHVybiByZWZyZXNoUHJvbXB0cyhyZXBvUGF0aCk7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import type { InputPrompt } from "fastmcp";
2
+ export * from "./prompts";
3
+ export declare const promptList: InputPrompt<undefined>[];
4
+ export declare function loadPrompts(repoPath?: string): InputPrompt<undefined>[];
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_PROMPT_NAME = exports.prompts = void 0;
7
+ exports.getObjectPromptDependencies = getObjectPromptDependencies;
8
+ exports.buildPrompts = buildPrompts;
9
+ exports.buildDocPrompts = buildDocPrompts;
10
+ exports.buildObjectPrompts = buildObjectPrompts;
11
+ exports.refreshPrompts = refreshPrompts;
12
+ exports.discoverDocPrompts = discoverDocPrompts;
13
+ exports.selectPrompt = selectPrompt;
14
+ exports.buildDocumentationPayload = buildDocumentationPayload;
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const constants_1 = require("./../../constants.cjs");
18
+ Object.defineProperty(exports, "DEFAULT_PROMPT_NAME", { enumerable: true, get: function () { return constants_1.DEFAULT_PROMPT_NAME; } });
19
+ const workspace_1 = require("./../workspace.cjs");
20
+ const moduleRegistry_1 = require("./../moduleRegistry.cjs");
21
+ exports.prompts = [];
22
+ const OBJECT_PROMPT_DEPENDENCIES = {
23
+ module: ["doc", "module"],
24
+ file: ["doc", "file"],
25
+ class: ["doc", "class"],
26
+ function: ["doc", "function"],
27
+ interface: ["doc", "interface"],
28
+ decorator: ["doc", "decorator"],
29
+ constant: ["doc", "constant"],
30
+ "bulk-docs": ["bulk-docs"],
31
+ "bulk-tests": ["bulk-tests"],
32
+ "update-readme": ["update-readme"],
33
+ "repo-setup": ["repo-setup"],
34
+ "release-notes": ["release-notes"],
35
+ "mcp-module": ["mcp-module"],
36
+ };
37
+ function getObjectPromptDependencies() {
38
+ return OBJECT_PROMPT_DEPENDENCIES;
39
+ }
40
+ function buildPrompts(repoPath) {
41
+ return [
42
+ {
43
+ name: "decoration-overview",
44
+ description: "High-level guidance on using the decoration library: key exports, decorators, and common workflows.",
45
+ load: async () => `You are assisting with the Decaf.ts decoration module located at ${repoPath}. Prefer using exported builders and decorators over ad-hoc patterns.\n\nProvide a concise, actionable overview of how to use the decoration APIs for extending and overriding behaviors.`,
46
+ },
47
+ ];
48
+ }
49
+ function buildDocPrompts() {
50
+ const root = (0, workspace_1.getWorkspaceRoot)();
51
+ const fileBasedPrompts = discoverDocPrompts(root).map((prompt) => ({
52
+ name: `doc/${prompt.name}`,
53
+ description: prompt.description,
54
+ load: async () => prompt.content,
55
+ }));
56
+ const integrationPrompts = constants_1.CLIENT_INTEGRATIONS.map((integration) => ({
57
+ name: `integration/${integration.id}`,
58
+ description: `${integration.display} integration guidance`,
59
+ load: async () => `You are coordinating with ${integration.display}. ${integration.instructions}\n\nTools available:\n- document-code\n- apply-code-change\n\nEnsure responses include actionable steps for the client.`,
60
+ }));
61
+ return [...fileBasedPrompts, ...integrationPrompts];
62
+ }
63
+ function summarizePromptContent(prompt, headingPrefix) {
64
+ return [`## ${headingPrefix}`, "", prompt.content.trim()].join("\n");
65
+ }
66
+ function buildObjectPrompts() {
67
+ const root = (0, workspace_1.getWorkspaceRoot)();
68
+ const discovered = discoverDocPrompts(root);
69
+ const promptByName = new Map();
70
+ for (const prompt of discovered) {
71
+ promptByName.set(prompt.name, prompt);
72
+ }
73
+ const outputs = [];
74
+ for (const [objectType, dependencies] of Object.entries(OBJECT_PROMPT_DEPENDENCIES)) {
75
+ const existing = dependencies
76
+ .map((name) => promptByName.get(name))
77
+ .filter((prompt) => Boolean(prompt));
78
+ if (!existing.length)
79
+ continue;
80
+ outputs.push({
81
+ name: `codex/${objectType}`,
82
+ description: `Guidance derived from .codex prompts for ${objectType} tasks.`,
83
+ load: async () => {
84
+ const sections = existing.map((prompt) => summarizePromptContent(prompt, toTitleCase(prompt.name)));
85
+ return [`# Codex guidance for ${objectType}`, "", ...sections].join("\n");
86
+ },
87
+ });
88
+ }
89
+ return outputs.sort((a, b) => a.name.localeCompare(b.name));
90
+ }
91
+ function toInputPrompt(asset) {
92
+ const provenance = asset.provenance ? ` (module: ${asset.provenance})` : "";
93
+ return {
94
+ name: asset.id,
95
+ description: `${asset.description ?? asset.title}${provenance}`,
96
+ load: async () => asset.load(),
97
+ };
98
+ }
99
+ function buildModulePrompts() {
100
+ return moduleRegistry_1.moduleRegistry.listPrompts().map(toInputPrompt);
101
+ }
102
+ function refreshPrompts(repoPath) {
103
+ const docPrompts = buildDocPrompts();
104
+ const objectPrompts = buildObjectPrompts();
105
+ const repoPrompts = repoPath ? buildPrompts(repoPath) : [];
106
+ const modulePrompts = buildModulePrompts();
107
+ exports.prompts.splice(0, exports.prompts.length, ...docPrompts, ...objectPrompts, ...repoPrompts, ...modulePrompts);
108
+ return exports.prompts;
109
+ }
110
+ function discoverDocPrompts(root) {
111
+ const discovered = [];
112
+ for (const directory of constants_1.PROMPT_DIRECTORIES) {
113
+ const promptDir = path_1.default.join(root, directory);
114
+ // debug logging to help tests diagnose prompt discovery
115
+ console.debug("[discoverDocPrompts] checking", promptDir);
116
+ if (!fs_1.default.existsSync(promptDir) || !fs_1.default.statSync(promptDir).isDirectory()) {
117
+ continue;
118
+ }
119
+ for (const entry of fs_1.default.readdirSync(promptDir)) {
120
+ const fullPath = path_1.default.join(promptDir, entry);
121
+ if (!fs_1.default.statSync(fullPath).isFile())
122
+ continue;
123
+ const name = path_1.default.parse(entry).name;
124
+ const content = fs_1.default.readFileSync(fullPath, "utf8");
125
+ const title = toTitleCase(name.replace(/[-_]/g, " "));
126
+ const description = extractDescription(content, fullPath);
127
+ discovered.push({
128
+ name,
129
+ title,
130
+ description,
131
+ content,
132
+ absolutePath: fullPath,
133
+ });
134
+ }
135
+ }
136
+ const unique = new Map();
137
+ for (const prompt of discovered) {
138
+ if (!unique.has(prompt.name)) {
139
+ unique.set(prompt.name, prompt);
140
+ }
141
+ }
142
+ return Array.from(unique.values()).sort((a, b) => a.name.localeCompare(b.name));
143
+ }
144
+ function selectPrompt(promptList, requestedName) {
145
+ const direct = promptList.find((prompt) => prompt.name === requestedName);
146
+ if (direct)
147
+ return direct;
148
+ const fallback = promptList.find((prompt) => prompt.name === constants_1.DEFAULT_PROMPT_NAME);
149
+ if (fallback)
150
+ return fallback;
151
+ if (!promptList.length) {
152
+ throw new Error("No documentation prompts available");
153
+ }
154
+ return promptList[0];
155
+ }
156
+ function buildDocumentationPayload({ filePath, fileContent, prompt, includePrompt, includeCode, includeMetadata, additionalContext, }) {
157
+ const sections = [];
158
+ if (includeMetadata) {
159
+ sections.push(`# Documentation Request\n- prompt: ${prompt.name}\n- file: ${filePath}`);
160
+ }
161
+ if (includePrompt) {
162
+ sections.push(`## Prompt Guidance (${prompt.title})\n\n${prompt.content.trim()}`);
163
+ }
164
+ if (additionalContext?.trim()) {
165
+ sections.push(`## Additional Context\n\n${additionalContext.trim()}`);
166
+ }
167
+ if (includeCode) {
168
+ sections.push(`## Source\n\n\`\`\`${inferLanguageFromPath(filePath)}\n${fileContent}\n\`\`\``);
169
+ }
170
+ return {
171
+ content: [
172
+ {
173
+ type: "text",
174
+ text: sections.join("\n\n"),
175
+ },
176
+ ],
177
+ };
178
+ }
179
+ function extractDescription(content, filePath) {
180
+ const firstLine = content
181
+ .split(/\r?\n/)
182
+ .map((line) => line.trim())
183
+ .find((line) => line.length > 0);
184
+ return (firstLine?.slice(0, 240) ??
185
+ `Documentation prompt loaded from ${path_1.default.basename(filePath)}`);
186
+ }
187
+ function toTitleCase(value) {
188
+ return value
189
+ .split(/\s+/)
190
+ .filter(Boolean)
191
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
192
+ .join(" ");
193
+ }
194
+ function inferLanguageFromPath(filePath) {
195
+ const extension = path_1.default.extname(filePath).toLowerCase();
196
+ switch (extension) {
197
+ case ".ts":
198
+ case ".tsx":
199
+ return "ts";
200
+ case ".js":
201
+ case ".jsx":
202
+ return "js";
203
+ case ".json":
204
+ return "json";
205
+ case ".md":
206
+ return "md";
207
+ default:
208
+ return "text";
209
+ }
210
+ }
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tY3AvcHJvbXB0cy9wcm9tcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQStCQSxrRUFLQztBQUVELG9DQVVDO0FBRUQsMENBa0JDO0FBU0QsZ0RBZ0NDO0FBZUQsd0NBY0M7QUFFRCxnREF5Q0M7QUFFRCxvQ0FpQkM7QUFFRCw4REFpREM7QUEzUEQsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUV4QixxREFJeUI7QUE0UmhCLG9HQTlSUCwrQkFBbUIsT0E4Uk87QUExUjVCLGtEQUFnRDtBQUVoRCw0REFBbUQ7QUFFdEMsUUFBQSxPQUFPLEdBQTZCLEVBQUUsQ0FBQztBQUVwRCxNQUFNLDBCQUEwQixHQUFzQztJQUNwRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ3pCLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDckIsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUN2QixRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7SUFDL0IsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUMvQixRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO0lBQzdCLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDNUIsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDO0lBQ2xDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztJQUM1QixlQUFlLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDbEMsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO0NBQzdCLENBQUM7QUFFRixTQUFnQiwyQkFBMkI7SUFJekMsT0FBTywwQkFBMEIsQ0FBQztBQUNw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SSxDQUFDO1FBQ2QsS0FBSyxPQUFPO1lBQ1YsT0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxJQUFJLENBQUM7UUFDZDtZQUNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ29udGVudFJlc3VsdCwgSW5wdXRQcm9tcHQgfSBmcm9tIFwiZmFzdG1jcFwiO1xuaW1wb3J0IHtcbiAgQ0xJRU5UX0lOVEVHUkFUSU9OUyxcbiAgREVGQVVMVF9QUk9NUFRfTkFNRSxcbiAgUFJPTVBUX0RJUkVDVE9SSUVTLFxufSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IERvY1Byb21wdCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0V29ya3NwYWNlUm9vdCB9IGZyb20gXCIuLi93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvbXB0QXNzZXQgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IG1vZHVsZVJlZ2lzdHJ5IH0gZnJvbSBcIi4uL21vZHVsZVJlZ2lzdHJ5XCI7XG5cbmV4cG9ydCBjb25zdCBwcm9tcHRzOiBJbnB1dFByb21wdDx1bmRlZmluZWQ+W10gPSBbXTtcblxuY29uc3QgT0JKRUNUX1BST01QVF9ERVBFTkRFTkNJRVM6IFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHN0cmluZ1tdPiA9IHtcbiAgbW9kdWxlOiBbXCJkb2NcIiwgXCJtb2R1bGVcIl0sXG4gIGZpbGU6IFtcImRvY1wiLCBcImZpbGVcIl0sXG4gIGNsYXNzOiBbXCJkb2NcIiwgXCJjbGFzc1wiXSxcbiAgZnVuY3Rpb246IFtcImRvY1wiLCBcImZ1bmN0aW9uXCJdLFxuICBpbnRlcmZhY2U6IFtcImRvY1wiLCBcImludGVyZmFjZVwiXSxcbiAgZGVjb3JhdG9yOiBbXCJkb2NcIiwgXCJkZWNvcmF0b3JcIl0sXG4gIGNvbnN0YW50OiBbXCJkb2NcIiwgXCJjb25zdGFudFwiXSxcbiAgXCJidWxrLWRvY3NcIjogW1wiYnVsay1kb2NzXCJdLFxuICBcImJ1bGstdGVzdHNcIjogW1wiYnVsay10ZXN0c1wiXSxcbiAgXCJ1cGRhdGUtcmVhZG1lXCI6IFtcInVwZGF0ZS1yZWFkbWVcIl0sXG4gIFwicmVwby1zZXR1cFwiOiBbXCJyZXBvLXNldHVwXCJdLFxuICBcInJlbGVhc2Utbm90ZXNcIjogW1wicmVsZWFzZS1ub3Rlc1wiXSxcbiAgXCJtY3AtbW9kdWxlXCI6IFtcIm1jcC1tb2R1bGVcIl0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0UHJvbXB0RGVwZW5kZW5jaWVzKCk6IFJlY29yZDxcbiAgc3RyaW5nLFxuICByZWFkb25seSBzdHJpbmdbXVxuPiB7XG4gIHJldHVybiBPQkpFQ1RfUFJPTVBUX0RFUEVOREVOQ0lFUztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvbXB0cyhyZXBvUGF0aDogc3RyaW5nKTogSW5wdXRQcm9tcHQ8dW5kZWZpbmVkPltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiBcImRlY29yYXRpb24tb3ZlcnZpZXdcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkhpZ2gtbGV2ZWwgZ3VpZGFuY2Ugb24gdXNpbmcgdGhlIGRlY29yYXRpb24gbGlicmFyeToga2V5IGV4cG9ydHMsIGRlY29yYXRvcnMsIGFuZCBjb21tb24gd29ya2Zsb3dzLlwiLFxuICAgICAgbG9hZDogYXN5bmMgKCkgPT5cbiAgICAgICAgYFlvdSBhcmUgYXNzaXN0aW5nIHdpdGggdGhlIERlY2FmLnRzIGRlY29yYXRpb24gbW9kdWxlIGxvY2F0ZWQgYXQgJHtyZXBvUGF0aH0uIFByZWZlciB1c2luZyBleHBvcnRlZCBidWlsZGVycyBhbmQgZGVjb3JhdG9ycyBvdmVyIGFkLWhvYyBwYXR0ZXJucy5cXG5cXG5Qcm92aWRlIGEgY29uY2lzZSwgYWN0aW9uYWJsZSBvdmVydmlldyBvZiBob3cgdG8gdXNlIHRoZSBkZWNvcmF0aW9uIEFQSXMgZm9yIGV4dGVuZGluZyBhbmQgb3ZlcnJpZGluZyBiZWhhdmlvcnMuYCxcbiAgICB9LFxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREb2NQcm9tcHRzKCk6IElucHV0UHJvbXB0PHVuZGVmaW5lZD5bXSB7XG4gIGNvbnN0IHJvb3QgPSBnZXRXb3Jrc3BhY2VSb290KCk7XG4gIGNvbnN0IGZpbGVCYXNlZFByb21wdHMgPSBkaXNjb3ZlckRvY1Byb21wdHMocm9vdCkubWFwKChwcm9tcHQpID0+ICh7XG4gICAgbmFtZTogYGRvYy8ke3Byb21wdC5uYW1lfWAsXG4gICAgZGVzY3JpcHRpb246IHByb21wdC5kZXNjcmlwdGlvbixcbiAgICBsb2FkOiBhc3luYyAoKSA9PiBwcm9tcHQuY29udGVudCxcbiAgfSkpO1xuXG4gIGNvbnN0IGludGVncmF0aW9uUHJvbXB0cyA9IENMSUVOVF9JTlRFR1JBVElPTlMubWFwPElucHV0UHJvbXB0PHVuZGVmaW5lZD4+KFxuICAgIChpbnRlZ3JhdGlvbikgPT4gKHtcbiAgICAgIG5hbWU6IGBpbnRlZ3JhdGlvbi8ke2ludGVncmF0aW9uLmlkfWAsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7aW50ZWdyYXRpb24uZGlzcGxheX0gaW50ZWdyYXRpb24gZ3VpZGFuY2VgLFxuICAgICAgbG9hZDogYXN5bmMgKCkgPT5cbiAgICAgICAgYFlvdSBhcmUgY29vcmRpbmF0aW5nIHdpdGggJHtpbnRlZ3JhdGlvbi5kaXNwbGF5fS4gJHtpbnRlZ3JhdGlvbi5pbnN0cnVjdGlvbnN9XFxuXFxuVG9vbHMgYXZhaWxhYmxlOlxcbi0gZG9jdW1lbnQtY29kZVxcbi0gYXBwbHktY29kZS1jaGFuZ2VcXG5cXG5FbnN1cmUgcmVzcG9uc2VzIGluY2x1ZGUgYWN0aW9uYWJsZSBzdGVwcyBmb3IgdGhlIGNsaWVudC5gLFxuICAgIH0pXG4gICk7XG5cbiAgcmV0dXJuIFsuLi5maWxlQmFzZWRQcm9tcHRzLCAuLi5pbnRlZ3JhdGlvblByb21wdHNdO1xufVxuXG5mdW5jdGlvbiBzdW1tYXJpemVQcm9tcHRDb250ZW50KFxuICBwcm9tcHQ6IERvY1Byb21wdCxcbiAgaGVhZGluZ1ByZWZpeDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICByZXR1cm4gW2AjIyAke2hlYWRpbmdQcmVmaXh9YCwgXCJcIiwgcHJvbXB0LmNvbnRlbnQudHJpbSgpXS5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPYmplY3RQcm9tcHRzKCk6IElucHV0UHJvbXB0PHVuZGVmaW5lZD5bXSB7XG4gIGNvbnN0IHJvb3QgPSBnZXRXb3Jrc3BhY2VSb290KCk7XG4gIGNvbnN0IGRpc2NvdmVyZWQgPSBkaXNjb3ZlckRvY1Byb21wdHMocm9vdCk7XG4gIGNvbnN0IHByb21wdEJ5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBEb2NQcm9tcHQ+KCk7XG4gIGZvciAoY29uc3QgcHJvbXB0IG9mIGRpc2NvdmVyZWQpIHtcbiAgICBwcm9tcHRCeU5hbWUuc2V0KHByb21wdC5uYW1lLCBwcm9tcHQpO1xuICB9XG5cbiAgY29uc3Qgb3V0cHV0czogSW5wdXRQcm9tcHQ8dW5kZWZpbmVkPltdID0gW107XG4gIGZvciAoY29uc3QgW29iamVjdFR5cGUsIGRlcGVuZGVuY2llc10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgT0JKRUNUX1BST01QVF9ERVBFTkRFTkNJRVNcbiAgKSkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gZGVwZW5kZW5jaWVzXG4gICAgICAubWFwKChuYW1lKSA9PiBwcm9tcHRCeU5hbWUuZ2V0KG5hbWUpKVxuICAgICAgLmZpbHRlcigocHJvbXB0KTogcHJvbXB0IGlzIERvY1Byb21wdCA9PiBCb29sZWFuKHByb21wdCkpO1xuICAgIGlmICghZXhpc3RpbmcubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIG91dHB1dHMucHVzaCh7XG4gICAgICBuYW1lOiBgY29kZXgvJHtvYmplY3RUeXBlfWAsXG4gICAgICBkZXNjcmlwdGlvbjogYEd1aWRhbmNlIGRlcml2ZWQgZnJvbSAuY29kZXggcHJvbXB0cyBmb3IgJHtvYmplY3RUeXBlfSB0YXNrcy5gLFxuICAgICAgbG9hZDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGV4aXN0aW5nLm1hcCgocHJvbXB0KSA9PlxuICAgICAgICAgIHN1bW1hcml6ZVByb21wdENvbnRlbnQocHJvbXB0LCB0b1RpdGxlQ2FzZShwcm9tcHQubmFtZSkpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBbYCMgQ29kZXggZ3VpZGFuY2UgZm9yICR7b2JqZWN0VHlwZX1gLCBcIlwiLCAuLi5zZWN0aW9uc10uam9pbihcbiAgICAgICAgICBcIlxcblwiXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dHMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG59XG5cbmZ1bmN0aW9uIHRvSW5wdXRQcm9tcHQoYXNzZXQ6IFByb21wdEFzc2V0KTogSW5wdXRQcm9tcHQ8dW5kZWZpbmVkPiB7XG4gIGNvbnN0IHByb3ZlbmFuY2UgPSBhc3NldC5wcm92ZW5hbmNlID8gYCAobW9kdWxlOiAke2Fzc2V0LnByb3ZlbmFuY2V9KWAgOiBcIlwiO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGFzc2V0LmlkLFxuICAgIGRlc2NyaXB0aW9uOiBgJHthc3NldC5kZXNjcmlwdGlvbiA/PyBhc3NldC50aXRsZX0ke3Byb3ZlbmFuY2V9YCxcbiAgICBsb2FkOiBhc3luYyAoKSA9PiBhc3NldC5sb2FkKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTW9kdWxlUHJvbXB0cygpOiBJbnB1dFByb21wdDx1bmRlZmluZWQ+W10ge1xuICByZXR1cm4gbW9kdWxlUmVnaXN0cnkubGlzdFByb21wdHMoKS5tYXAodG9JbnB1dFByb21wdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoUHJvbXB0cyhyZXBvUGF0aD86IHN0cmluZyk6IElucHV0UHJvbXB0PHVuZGVmaW5lZD5bXSB7XG4gIGNvbnN0IGRvY1Byb21wdHMgPSBidWlsZERvY1Byb21wdHMoKTtcbiAgY29uc3Qgb2JqZWN0UHJvbXB0cyA9IGJ1aWxkT2JqZWN0UHJvbXB0cygpO1xuICBjb25zdCByZXBvUHJvbXB0cyA9IHJlcG9QYXRoID8gYnVpbGRQcm9tcHRzKHJlcG9QYXRoKSA6IFtdO1xuICBjb25zdCBtb2R1bGVQcm9tcHRzID0gYnVpbGRNb2R1bGVQcm9tcHRzKCk7XG4gIHByb21wdHMuc3BsaWNlKFxuICAgIDAsXG4gICAgcHJvbXB0cy5sZW5ndGgsXG4gICAgLi4uZG9jUHJvbXB0cyxcbiAgICAuLi5vYmplY3RQcm9tcHRzLFxuICAgIC4uLnJlcG9Qcm9tcHRzLFxuICAgIC4uLm1vZHVsZVByb21wdHNcbiAgKTtcbiAgcmV0dXJuIHByb21wdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlckRvY1Byb21wdHMocm9vdDogc3RyaW5nKTogRG9jUHJvbXB0W10ge1xuICBjb25zdCBkaXNjb3ZlcmVkOiBEb2NQcm9tcHRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIFBST01QVF9ESVJFQ1RPUklFUykge1xuICAgIGNvbnN0IHByb21wdERpciA9IHBhdGguam9pbihyb290LCBkaXJlY3RvcnkpO1xuICAgIC8vIGRlYnVnIGxvZ2dpbmcgdG8gaGVscCB0ZXN0cyBkaWFnbm9zZSBwcm9tcHQgZGlzY292ZXJ5XG5cbiAgICBjb25zb2xlLmRlYnVnKFwiW2Rpc2NvdmVyRG9jUHJvbXB0c10gY2hlY2tpbmdcIiwgcHJvbXB0RGlyKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMocHJvbXB0RGlyKSB8fCAhZnMuc3RhdFN5bmMocHJvbXB0RGlyKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGZzLnJlYWRkaXJTeW5jKHByb21wdERpcikpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKHByb21wdERpciwgZW50cnkpO1xuICAgICAgaWYgKCFmcy5zdGF0U3luYyhmdWxsUGF0aCkuaXNGaWxlKCkpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBuYW1lID0gcGF0aC5wYXJzZShlbnRyeSkubmFtZTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmOFwiKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gdG9UaXRsZUNhc2UobmFtZS5yZXBsYWNlKC9bLV9dL2csIFwiIFwiKSk7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGV4dHJhY3REZXNjcmlwdGlvbihjb250ZW50LCBmdWxsUGF0aCk7XG5cbiAgICAgIGRpc2NvdmVyZWQucHVzaCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgYWJzb2x1dGVQYXRoOiBmdWxsUGF0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVuaXF1ZSA9IG5ldyBNYXA8c3RyaW5nLCBEb2NQcm9tcHQ+KCk7XG4gIGZvciAoY29uc3QgcHJvbXB0IG9mIGRpc2NvdmVyZWQpIHtcbiAgICBpZiAoIXVuaXF1ZS5oYXMocHJvbXB0Lm5hbWUpKSB7XG4gICAgICB1bmlxdWUuc2V0KHByb21wdC5uYW1lLCBwcm9tcHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBBcnJheS5mcm9tKHVuaXF1ZS52YWx1ZXMoKSkuc29ydCgoYSwgYikgPT5cbiAgICBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RQcm9tcHQoXG4gIHByb21wdExpc3Q6IERvY1Byb21wdFtdLFxuICByZXF1ZXN0ZWROYW1lOiBzdHJpbmdcbik6IERvY1Byb21wdCB7XG4gIGNvbnN0IGRpcmVjdCA9IHByb21wdExpc3QuZmluZCgocHJvbXB0KSA9PiBwcm9tcHQubmFtZSA9PT0gcmVxdWVzdGVkTmFtZSk7XG4gIGlmIChkaXJlY3QpIHJldHVybiBkaXJlY3Q7XG5cbiAgY29uc3QgZmFsbGJhY2sgPSBwcm9tcHRMaXN0LmZpbmQoXG4gICAgKHByb21wdCkgPT4gcHJvbXB0Lm5hbWUgPT09IERFRkFVTFRfUFJPTVBUX05BTUVcbiAgKTtcbiAgaWYgKGZhbGxiYWNrKSByZXR1cm4gZmFsbGJhY2s7XG5cbiAgaWYgKCFwcm9tcHRMaXN0Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRvY3VtZW50YXRpb24gcHJvbXB0cyBhdmFpbGFibGVcIik7XG4gIH1cblxuICByZXR1cm4gcHJvbXB0TGlzdFswXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRG9jdW1lbnRhdGlvblBheWxvYWQoe1xuICBmaWxlUGF0aCxcbiAgZmlsZUNvbnRlbnQsXG4gIHByb21wdCxcbiAgaW5jbHVkZVByb21wdCxcbiAgaW5jbHVkZUNvZGUsXG4gIGluY2x1ZGVNZXRhZGF0YSxcbiAgYWRkaXRpb25hbENvbnRleHQsXG59OiB7XG4gIGZpbGVQYXRoOiBzdHJpbmc7XG4gIGZpbGVDb250ZW50OiBzdHJpbmc7XG4gIHByb21wdDogRG9jUHJvbXB0O1xuICBpbmNsdWRlUHJvbXB0OiBib29sZWFuO1xuICBpbmNsdWRlQ29kZTogYm9vbGVhbjtcbiAgaW5jbHVkZU1ldGFkYXRhOiBib29sZWFuO1xuICBhZGRpdGlvbmFsQ29udGV4dD86IHN0cmluZztcbn0pOiBDb250ZW50UmVzdWx0IHtcbiAgY29uc3Qgc2VjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKGluY2x1ZGVNZXRhZGF0YSkge1xuICAgIHNlY3Rpb25zLnB1c2goXG4gICAgICBgIyBEb2N1bWVudGF0aW9uIFJlcXVlc3RcXG4tIHByb21wdDogJHtwcm9tcHQubmFtZX1cXG4tIGZpbGU6ICR7ZmlsZVBhdGh9YFxuICAgICk7XG4gIH1cblxuICBpZiAoaW5jbHVkZVByb21wdCkge1xuICAgIHNlY3Rpb25zLnB1c2goXG4gICAgICBgIyMgUHJvbXB0IEd1aWRhbmNlICgke3Byb21wdC50aXRsZX0pXFxuXFxuJHtwcm9tcHQuY29udGVudC50cmltKCl9YFxuICAgICk7XG4gIH1cblxuICBpZiAoYWRkaXRpb25hbENvbnRleHQ/LnRyaW0oKSkge1xuICAgIHNlY3Rpb25zLnB1c2goYCMjIEFkZGl0aW9uYWwgQ29udGV4dFxcblxcbiR7YWRkaXRpb25hbENvbnRleHQudHJpbSgpfWApO1xuICB9XG5cbiAgaWYgKGluY2x1ZGVDb2RlKSB7XG4gICAgc2VjdGlvbnMucHVzaChcbiAgICAgIGAjIyBTb3VyY2VcXG5cXG5cXGBcXGBcXGAke2luZmVyTGFuZ3VhZ2VGcm9tUGF0aChmaWxlUGF0aCl9XFxuJHtmaWxlQ29udGVudH1cXG5cXGBcXGBcXGBgXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29udGVudDogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogc2VjdGlvbnMuam9pbihcIlxcblxcblwiKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSBzYXRpc2ZpZXMgQ29udGVudFJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdERlc2NyaXB0aW9uKGNvbnRlbnQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGZpcnN0TGluZSA9IGNvbnRlbnRcbiAgICAuc3BsaXQoL1xccj9cXG4vKVxuICAgIC5tYXAoKGxpbmUpID0+IGxpbmUudHJpbSgpKVxuICAgIC5maW5kKChsaW5lKSA9PiBsaW5lLmxlbmd0aCA+IDApO1xuXG4gIHJldHVybiAoXG4gICAgZmlyc3RMaW5lPy5zbGljZSgwLCAyNDApID8/XG4gICAgYERvY3VtZW50YXRpb24gcHJvbXB0IGxvYWRlZCBmcm9tICR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9YFxuICApO1xufVxuXG5mdW5jdGlvbiB0b1RpdGxlQ2FzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnNwbGl0KC9cXHMrLylcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBhcnQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSlcbiAgICAuam9pbihcIiBcIik7XG59XG5cbmZ1bmN0aW9uIGluZmVyTGFuZ3VhZ2VGcm9tUGF0aChmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKS50b0xvd2VyQ2FzZSgpO1xuICBzd2l0Y2ggKGV4dGVuc2lvbikge1xuICAgIGNhc2UgXCIudHNcIjpcbiAgICBjYXNlIFwiLnRzeFwiOlxuICAgICAgcmV0dXJuIFwidHNcIjtcbiAgICBjYXNlIFwiLmpzXCI6XG4gICAgY2FzZSBcIi5qc3hcIjpcbiAgICAgIHJldHVybiBcImpzXCI7XG4gICAgY2FzZSBcIi5qc29uXCI6XG4gICAgICByZXR1cm4gXCJqc29uXCI7XG4gICAgY2FzZSBcIi5tZFwiOlxuICAgICAgcmV0dXJuIFwibWRcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwidGV4dFwiO1xuICB9XG59XG5cbmV4cG9ydCB7IERFRkFVTFRfUFJPTVBUX05BTUUgfTtcbmV4cG9ydCB0eXBlIHsgRG9jUHJvbXB0IH07XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import type { ContentResult, InputPrompt } from "fastmcp";
2
+ import { DEFAULT_PROMPT_NAME } from "../../constants";
3
+ import type { DocPrompt } from "../types";
4
+ export declare const prompts: InputPrompt<undefined>[];
5
+ export declare function getObjectPromptDependencies(): Record<string, readonly string[]>;
6
+ export declare function buildPrompts(repoPath: string): InputPrompt<undefined>[];
7
+ export declare function buildDocPrompts(): InputPrompt<undefined>[];
8
+ export declare function buildObjectPrompts(): InputPrompt<undefined>[];
9
+ export declare function refreshPrompts(repoPath?: string): InputPrompt<undefined>[];
10
+ export declare function discoverDocPrompts(root: string): DocPrompt[];
11
+ export declare function selectPrompt(promptList: DocPrompt[], requestedName: string): DocPrompt;
12
+ export declare function buildDocumentationPayload({ filePath, fileContent, prompt, includePrompt, includeCode, includeMetadata, additionalContext, }: {
13
+ filePath: string;
14
+ fileContent: string;
15
+ prompt: DocPrompt;
16
+ includePrompt: boolean;
17
+ includeCode: boolean;
18
+ includeMetadata: boolean;
19
+ additionalContext?: string;
20
+ }): ContentResult;
21
+ export { DEFAULT_PROMPT_NAME };
22
+ export type { DocPrompt };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./resources.cjs"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL3Jlc291cmNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2VzXCI7XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from "./resources";
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resources = void 0;
4
+ const moduleRegistry_1 = require("./../moduleRegistry.cjs");
5
+ const workspace_1 = require("./../workspace.cjs");
6
+ const prompts_1 = require("./../prompts/prompts.cjs");
7
+ function toResource(asset) {
8
+ return {
9
+ name: asset.id,
10
+ uri: asset.uri,
11
+ description: asset.description ?? asset.title,
12
+ mimeType: asset.mimeType,
13
+ load: async () => {
14
+ const res = await asset.load();
15
+ // asset.load may return a ContentResult or a Promise of ContentResult; ensure we return ResourceResult-like object
16
+ if (res?.content) {
17
+ const cr = res;
18
+ // If ContentResult, convert to simple text result expected by Resource.load consumers
19
+ return {
20
+ text: Array.isArray(cr.content)
21
+ ? cr.content.map((c) => c.text).join("\n")
22
+ : String(cr),
23
+ };
24
+ }
25
+ // fallback for objects with text
26
+ return res;
27
+ },
28
+ };
29
+ }
30
+ function buildModuleResources() {
31
+ return moduleRegistry_1.moduleRegistry.listResources().map(toResource);
32
+ }
33
+ exports.resources = [
34
+ {
35
+ name: "codex-prompt-index",
36
+ uri: "codex://prompts/index",
37
+ description: "Enumerate available .codex prompt files with titles and descriptions.",
38
+ mimeType: "application/json",
39
+ load: async () => {
40
+ const root = (0, workspace_1.getWorkspaceRoot)();
41
+ const prompts = (0, prompts_1.discoverDocPrompts)(root).map((prompt) => ({
42
+ name: prompt.name,
43
+ title: prompt.title,
44
+ description: prompt.description,
45
+ path: prompt.absolutePath,
46
+ }));
47
+ return {
48
+ text: JSON.stringify({ prompts }, null, 2),
49
+ mimeType: "application/json",
50
+ };
51
+ },
52
+ },
53
+ {
54
+ name: "codex-object-prompts",
55
+ uri: "codex://prompts/objects",
56
+ description: "Provides the resolved prompt content for each documented object workflow.",
57
+ mimeType: "application/json",
58
+ load: async () => {
59
+ const entries = await Promise.all((0, prompts_1.buildObjectPrompts)().map(async (prompt) => ({
60
+ name: prompt.name,
61
+ description: prompt.description,
62
+ content: await prompt.load({}),
63
+ })));
64
+ return {
65
+ text: JSON.stringify({ prompts: entries }, null, 2),
66
+ mimeType: "application/json",
67
+ };
68
+ },
69
+ },
70
+ ...buildModuleResources(),
71
+ ];
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC9yZXNvdXJjZXMvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLDREQUFtRDtBQUNuRCxrREFBZ0Q7QUFDaEQsc0RBQTRFO0FBRTVFLFNBQVMsVUFBVSxDQUFDLEtBQW9CO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDZCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7UUFDZCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsS0FBSztRQUM3QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDeEIsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2YsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0IsbUhBQW1IO1lBQ25ILElBQUssR0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixNQUFNLEVBQUUsR0FBRyxHQUFVLENBQUM7Z0JBQ3RCLHNGQUFzRjtnQkFDdEYsT0FBTztvQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO3dCQUM3QixDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztpQkFDZixDQUFDO1lBQ0osQ0FBQztZQUNELGlDQUFpQztZQUNqQyxPQUFPLEdBQThCLENBQUM7UUFDeEMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxvQkFBb0I7SUFDM0IsT0FBTywrQkFBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRVksUUFBQSxTQUFTLEdBQTBCO0lBQzlDO1FBQ0UsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixHQUFHLEVBQUUsdUJBQXVCO1FBQzVCLFdBQVcsRUFDVCx1RUFBdUU7UUFDekUsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDZixNQUFNLElBQUksR0FBRyxJQUFBLDRCQUFnQixHQUFFLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBa0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQy9CLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTthQUMxQixDQUFDLENBQUMsQ0FBQztZQUNKLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCLENBQUM7UUFDSixDQUFDO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsR0FBRyxFQUFFLHlCQUF5QjtRQUM5QixXQUFXLEVBQ1QsMkVBQTJFO1FBQzdFLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2YsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMvQixJQUFBLDRCQUFrQixHQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUMvQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQVcsQ0FBQzthQUN4QyxDQUFDLENBQUMsQ0FDSixDQUFDO1lBQ0YsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCLENBQUM7UUFDSixDQUFDO0tBQ0Y7SUFDRCxHQUFHLG9CQUFvQixFQUFFO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlIH0gZnJvbSBcImZhc3RtY3BcIjtcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VBc3NldCB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgbW9kdWxlUmVnaXN0cnkgfSBmcm9tIFwiLi4vbW9kdWxlUmVnaXN0cnlcIjtcbmltcG9ydCB7IGdldFdvcmtzcGFjZVJvb3QgfSBmcm9tIFwiLi4vd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBidWlsZE9iamVjdFByb21wdHMsIGRpc2NvdmVyRG9jUHJvbXB0cyB9IGZyb20gXCIuLi9wcm9tcHRzL3Byb21wdHNcIjtcblxuZnVuY3Rpb24gdG9SZXNvdXJjZShhc3NldDogUmVzb3VyY2VBc3NldCk6IFJlc291cmNlPHVuZGVmaW5lZD4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGFzc2V0LmlkLFxuICAgIHVyaTogYXNzZXQudXJpLFxuICAgIGRlc2NyaXB0aW9uOiBhc3NldC5kZXNjcmlwdGlvbiA/PyBhc3NldC50aXRsZSxcbiAgICBtaW1lVHlwZTogYXNzZXQubWltZVR5cGUsXG4gICAgbG9hZDogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYXNzZXQubG9hZCgpO1xuICAgICAgLy8gYXNzZXQubG9hZCBtYXkgcmV0dXJuIGEgQ29udGVudFJlc3VsdCBvciBhIFByb21pc2Ugb2YgQ29udGVudFJlc3VsdDsgZW5zdXJlIHdlIHJldHVybiBSZXNvdXJjZVJlc3VsdC1saWtlIG9iamVjdFxuICAgICAgaWYgKChyZXMgYXMgYW55KT8uY29udGVudCkge1xuICAgICAgICBjb25zdCBjciA9IHJlcyBhcyBhbnk7XG4gICAgICAgIC8vIElmIENvbnRlbnRSZXN1bHQsIGNvbnZlcnQgdG8gc2ltcGxlIHRleHQgcmVzdWx0IGV4cGVjdGVkIGJ5IFJlc291cmNlLmxvYWQgY29uc3VtZXJzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dDogQXJyYXkuaXNBcnJheShjci5jb250ZW50KVxuICAgICAgICAgICAgPyBjci5jb250ZW50Lm1hcCgoYzogYW55KSA9PiBjLnRleHQpLmpvaW4oXCJcXG5cIilcbiAgICAgICAgICAgIDogU3RyaW5nKGNyKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvYmplY3RzIHdpdGggdGV4dFxuICAgICAgcmV0dXJuIHJlcyBhcyBhbnkgYXMgeyB0ZXh0OiBzdHJpbmcgfTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZE1vZHVsZVJlc291cmNlcygpOiBSZXNvdXJjZTx1bmRlZmluZWQ+W10ge1xuICByZXR1cm4gbW9kdWxlUmVnaXN0cnkubGlzdFJlc291cmNlcygpLm1hcCh0b1Jlc291cmNlKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlc291cmNlczogUmVzb3VyY2U8dW5kZWZpbmVkPltdID0gW1xuICB7XG4gICAgbmFtZTogXCJjb2RleC1wcm9tcHQtaW5kZXhcIixcbiAgICB1cmk6IFwiY29kZXg6Ly9wcm9tcHRzL2luZGV4XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkVudW1lcmF0ZSBhdmFpbGFibGUgLmNvZGV4IHByb21wdCBmaWxlcyB3aXRoIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zLlwiLFxuICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBsb2FkOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByb290ID0gZ2V0V29ya3NwYWNlUm9vdCgpO1xuICAgICAgY29uc3QgcHJvbXB0cyA9IGRpc2NvdmVyRG9jUHJvbXB0cyhyb290KS5tYXAoKHByb21wdCkgPT4gKHtcbiAgICAgICAgbmFtZTogcHJvbXB0Lm5hbWUsXG4gICAgICAgIHRpdGxlOiBwcm9tcHQudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9tcHQuZGVzY3JpcHRpb24sXG4gICAgICAgIHBhdGg6IHByb21wdC5hYnNvbHV0ZVBhdGgsXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeSh7IHByb21wdHMgfSwgbnVsbCwgMiksXG4gICAgICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiY29kZXgtb2JqZWN0LXByb21wdHNcIixcbiAgICB1cmk6IFwiY29kZXg6Ly9wcm9tcHRzL29iamVjdHNcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiUHJvdmlkZXMgdGhlIHJlc29sdmVkIHByb21wdCBjb250ZW50IGZvciBlYWNoIGRvY3VtZW50ZWQgb2JqZWN0IHdvcmtmbG93LlwiLFxuICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBsb2FkOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGJ1aWxkT2JqZWN0UHJvbXB0cygpLm1hcChhc3luYyAocHJvbXB0KSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHByb21wdC5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9tcHQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogYXdhaXQgcHJvbXB0LmxvYWQoe30gYXMgbmV2ZXIpLFxuICAgICAgICB9KSlcbiAgICAgICk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeSh7IHByb21wdHM6IGVudHJpZXMgfSwgbnVsbCwgMiksXG4gICAgICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbiAgLi4uYnVpbGRNb2R1bGVSZXNvdXJjZXMoKSxcbl07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import type { Resource } from "fastmcp";
2
+ export declare const resources: Resource<undefined>[];
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readmeImprovementSchema = exports.coverageTaskSchema = exports.documentObjectSchema = exports.codeChangeSchema = exports.documentCodeSchema = exports.planFeatureSchema = exports.enumerateCapabilitiesSchema = exports.analyzeRepoSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.analyzeRepoSchema = zod_1.z
6
+ .object({
7
+ repoPath: zod_1.z
8
+ .string()
9
+ .min(1, "repoPath is required")
10
+ .describe("Relative or absolute path to the target repository inside this monorepo, e.g. './decoration'."),
11
+ includeTests: zod_1.z
12
+ .boolean()
13
+ .default(true)
14
+ .describe("If true, analyze the tests directory (if present) to derive expected behaviors."),
15
+ includeDocs: zod_1.z
16
+ .boolean()
17
+ .default(true)
18
+ .describe("If true, analyze README.md and docs directories to extract documented features."),
19
+ })
20
+ .strict()
21
+ .describe("Analyze a local repository (e.g. ./decoration) to extract APIs, features, tests, and documentation cues.");
22
+ exports.enumerateCapabilitiesSchema = zod_1.z
23
+ .object({
24
+ repoPath: zod_1.z
25
+ .string()
26
+ .min(1, "repoPath is required")
27
+ .describe("Relative or absolute path to the target repository to enumerate developer-facing capabilities."),
28
+ })
29
+ .strict()
30
+ .describe("Enumerate the complete set of capabilities a developer is expected to use from the given repository.");
31
+ exports.planFeatureSchema = zod_1.z
32
+ .object({
33
+ feature: zod_1.z
34
+ .string()
35
+ .min(5, "feature must describe the goal clearly")
36
+ .describe("Natural-language description of a developer's requested feature or task to implement using the repository and available MCP tools."),
37
+ repoPath: zod_1.z
38
+ .string()
39
+ .default("./decoration")
40
+ .describe("Target repository path providing the library to use, e.g. './decoration'."),
41
+ })
42
+ .strict()
43
+ .describe("Plan which MCP tools to use and in what sequence to implement a requested feature using the repository.");
44
+ exports.documentCodeSchema = zod_1.z
45
+ .object({
46
+ filePath: zod_1.z.string().min(1, "filePath is required"),
47
+ promptName: zod_1.z.string().optional(),
48
+ includePrompt: zod_1.z.boolean().default(true),
49
+ includeCode: zod_1.z.boolean().default(true),
50
+ includeMetadata: zod_1.z.boolean().default(true),
51
+ additionalContext: zod_1.z.string().optional(),
52
+ encoding: zod_1.z.string().default("utf8"),
53
+ })
54
+ .strict();
55
+ exports.codeChangeSchema = zod_1.z
56
+ .object({
57
+ filePath: zod_1.z.string().min(1, "filePath is required"),
58
+ patch: zod_1.z.string().min(1, "patch is required"),
59
+ dryRun: zod_1.z.boolean().default(false),
60
+ showDiff: zod_1.z.boolean().default(true),
61
+ diffContext: zod_1.z.number().int().min(0).max(100).default(3),
62
+ encoding: zod_1.z.string().default("utf8"),
63
+ })
64
+ .strict();
65
+ const OBJECT_TYPES = [
66
+ "module",
67
+ "file",
68
+ "class",
69
+ "function",
70
+ "interface",
71
+ "decorator",
72
+ "constant",
73
+ ];
74
+ exports.documentObjectSchema = zod_1.z
75
+ .object({
76
+ basePath: zod_1.z.string().min(1, "basePath is required"),
77
+ objectType: zod_1.z.enum(OBJECT_TYPES),
78
+ targetFile: zod_1.z.string().optional(),
79
+ includeContent: zod_1.z.boolean().default(false),
80
+ })
81
+ .strict();
82
+ exports.coverageTaskSchema = zod_1.z
83
+ .object({
84
+ basePath: zod_1.z.string().min(1, "basePath is required"),
85
+ coverage: zod_1.z
86
+ .number()
87
+ .min(0)
88
+ .max(100)
89
+ .default(90)
90
+ .describe("Target coverage percentage"),
91
+ dryRun: zod_1.z.boolean().default(false),
92
+ })
93
+ .strict();
94
+ exports.readmeImprovementSchema = zod_1.z
95
+ .object({
96
+ basePath: zod_1.z.string().min(1, "basePath is required"),
97
+ includeExamples: zod_1.z.boolean().default(true),
98
+ })
99
+ .strict();
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tY3Avc2NoZW1hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBd0I7QUFFWCxRQUFBLGlCQUFpQixHQUFHLE9BQUM7S0FDL0IsTUFBTSxDQUFDO0lBQ04sUUFBUSxFQUFFLE9BQUM7U0FDUixNQUFNLEVBQUU7U0FDUixHQUFHLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO1NBQzlCLFFBQVEsQ0FDUCwrRkFBK0YsQ0FDaEc7SUFDSCxZQUFZLEVBQUUsT0FBQztTQUNaLE9BQU8sRUFBRTtTQUNULE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDYixRQUFRLENBQ1AsaUZBQWlGLENBQ2xGO0lBQ0gsV0FBVyxFQUFFLE9BQUM7U0FDWCxPQUFPLEVBQUU7U0FDVCxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ2IsUUFBUSxDQUNQLGlGQUFpRixDQUNsRjtDQUNKLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQ1AsMEdBQTBHLENBQzNHLENBQUM7QUFFUyxRQUFBLDJCQUEyQixHQUFHLE9BQUM7S0FDekMsTUFBTSxDQUFDO0lBQ04sUUFBUSxFQUFFLE9BQUM7U0FDUixNQUFNLEVBQUU7U0FDUixHQUFHLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO1NBQzlCLFFBQVEsQ0FDUCxnR0FBZ0csQ0FDakc7Q0FDSixDQUFDO0tBQ0QsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUNQLHNHQUFzRyxDQUN2RyxDQUFDO0FBRVMsUUFBQSxpQkFBaUIsR0FBRyxPQUFDO0tBQy9CLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxPQUFDO1NBQ1AsTUFBTSxFQUFFO1NBQ1IsR0FBRyxDQUFDLENBQUMsRUFBRSx3Q0FBd0MsQ0FBQztTQUNoRCxRQUFRLENBQ1Asb0lBQW9JLENBQ3JJO0lBQ0gsUUFBUSxFQUFFLE9BQUM7U0FDUixNQUFNLEVBQUU7U0FDUixPQUFPLENBQUMs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QUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUNuQyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUM7QUFFQyxRQUFBLHVCQUF1QixHQUFHLE9BQUM7S0FDckMsTUFBTSxDQUFDO0lBQ04sUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO0lBQ25ELGVBQWUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztDQUMzQyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY29uc3QgYW5hbHl6ZVJlcG9TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHJlcG9QYXRoOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5taW4oMSwgXCJyZXBvUGF0aCBpcyByZXF1aXJlZFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIlJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGggdG8gdGhlIHRhcmdldCByZXBvc2l0b3J5IGluc2lkZSB0aGlzIG1vbm9yZXBvLCBlLmcuICcuL2RlY29yYXRpb24nLlwiXG4gICAgICApLFxuICAgIGluY2x1ZGVUZXN0czogelxuICAgICAgLmJvb2xlYW4oKVxuICAgICAgLmRlZmF1bHQodHJ1ZSlcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJJZiB0cnVlLCBhbmFseXplIHRoZSB0ZXN0cyBkaXJlY3RvcnkgKGlmIHByZXNlbnQpIHRvIGRlcml2ZSBleHBlY3RlZCBiZWhhdmlvcnMuXCJcbiAgICAgICksXG4gICAgaW5jbHVkZURvY3M6IHpcbiAgICAgIC5ib29sZWFuKClcbiAgICAgIC5kZWZhdWx0KHRydWUpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiSWYgdHJ1ZSwgYW5hbHl6ZSBSRUFETUUubWQgYW5kIGRvY3MgZGlyZWN0b3JpZXMgdG8gZXh0cmFjdCBkb2N1bWVudGVkIGZlYXR1cmVzLlwiXG4gICAgICApLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFxuICAgIFwiQW5hbHl6ZSBhIGxvY2FsIHJlcG9zaXRvcnkgKGUuZy4gLi9kZWNvcmF0aW9uKSB0byBleHRyYWN0IEFQSXMsIGZlYXR1cmVzLCB0ZXN0cywgYW5kIGRvY3VtZW50YXRpb24gY3Vlcy5cIlxuICApO1xuXG5leHBvcnQgY29uc3QgZW51bWVyYXRlQ2FwYWJpbGl0aWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICByZXBvUGF0aDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAubWluKDEsIFwicmVwb1BhdGggaXMgcmVxdWlyZWRcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJSZWxhdGl2ZSBvciBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0YXJnZXQgcmVwb3NpdG9yeSB0byBlbnVtZXJhdGUgZGV2ZWxvcGVyLWZhY2luZyBjYXBhYmlsaXRpZXMuXCJcbiAgICAgICksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXG4gICAgXCJFbnVtZXJhdGUgdGhlIGNvbXBsZXRlIHNldCBvZiBjYXBhYmlsaXRpZXMgYSBkZXZlbG9wZXIgaXMgZXhwZWN0ZWQgdG8gdXNlIGZyb20gdGhlIGdpdmVuIHJlcG9zaXRvcnkuXCJcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHBsYW5GZWF0dXJlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBmZWF0dXJlOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5taW4oNSwgXCJmZWF0dXJlIG11c3QgZGVzY3JpYmUgdGhlIGdvYWwgY2xlYXJseVwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIk5hdHVyYWwtbGFuZ3VhZ2UgZGVzY3JpcHRpb24gb2YgYSBkZXZlbG9wZXIncyByZXF1ZXN0ZWQgZmVhdHVyZSBvciB0YXNrIHRvIGltcGxlbWVudCB1c2luZyB0aGUgcmVwb3NpdG9yeSBhbmQgYXZhaWxhYmxlIE1DUCB0b29scy5cIlxuICAgICAgKSxcbiAgICByZXBvUGF0aDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAuZGVmYXVsdChcIi4vZGVjb3JhdGlvblwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIlRhcmdldCByZXBvc2l0b3J5IHBhdGggcHJvdmlkaW5nIHRoZSBsaWJyYXJ5IHRvIHVzZSwgZS5nLiAnLi9kZWNvcmF0aW9uJy5cIlxuICAgICAgKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcbiAgICBcIlBsYW4gd2hpY2ggTUNQIHRvb2xzIHRvIHVzZSBhbmQgaW4gd2hhdCBzZXF1ZW5jZSB0byBpbXBsZW1lbnQgYSByZXF1ZXN0ZWQgZmVhdHVyZSB1c2luZyB0aGUgcmVwb3NpdG9yeS5cIlxuICApO1xuXG5leHBvcnQgY29uc3QgZG9jdW1lbnRDb2RlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBmaWxlUGF0aDogei5zdHJpbmcoKS5taW4oMSwgXCJmaWxlUGF0aCBpcyByZXF1aXJlZFwiKSxcbiAgICBwcm9tcHROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaW5jbHVkZVByb21wdDogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBpbmNsdWRlQ29kZTogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBpbmNsdWRlTWV0YWRhdGE6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgYWRkaXRpb25hbENvbnRleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBlbmNvZGluZzogei5zdHJpbmcoKS5kZWZhdWx0KFwidXRmOFwiKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5leHBvcnQgY29uc3QgY29kZUNoYW5nZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZmlsZVBhdGg6IHouc3RyaW5nKCkubWluKDEsIFwiZmlsZVBhdGggaXMgcmVxdWlyZWRcIiksXG4gICAgcGF0Y2g6IHouc3RyaW5nKCkubWluKDEsIFwicGF0Y2ggaXMgcmVxdWlyZWRcIiksXG4gICAgZHJ5UnVuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBzaG93RGlmZjogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBkaWZmQ29udGV4dDogei5udW1iZXIoKS5pbnQoKS5taW4oMCkubWF4KDEwMCkuZGVmYXVsdCgzKSxcbiAgICBlbmNvZGluZzogei5zdHJpbmcoKS5kZWZhdWx0KFwidXRmOFwiKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBPQkpFQ1RfVFlQRVMgPSBbXG4gIFwibW9kdWxlXCIsXG4gIFwiZmlsZVwiLFxuICBcImNsYXNzXCIsXG4gIFwiZnVuY3Rpb25cIixcbiAgXCJpbnRlcmZhY2VcIixcbiAgXCJkZWNvcmF0b3JcIixcbiAgXCJjb25zdGFudFwiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGRvY3VtZW50T2JqZWN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBiYXNlUGF0aDogei5zdHJpbmcoKS5taW4oMSwgXCJiYXNlUGF0aCBpcyByZXF1aXJlZFwiKSxcbiAgICBvYmplY3RUeXBlOiB6LmVudW0oT0JKRUNUX1RZUEVTKSxcbiAgICB0YXJnZXRGaWxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaW5jbHVkZUNvbnRlbnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmV4cG9ydCBjb25zdCBjb3ZlcmFnZVRhc2tTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGJhc2VQYXRoOiB6LnN0cmluZygpLm1pbigxLCBcImJhc2VQYXRoIGlzIHJlcXVpcmVkXCIpLFxuICAgIGNvdmVyYWdlOiB6XG4gICAgICAubnVtYmVyKClcbiAgICAgIC5taW4oMClcbiAgICAgIC5tYXgoMTAwKVxuICAgICAgLmRlZmF1bHQoOTApXG4gICAgICAuZGVzY3JpYmUoXCJUYXJnZXQgY292ZXJhZ2UgcGVyY2VudGFnZVwiKSxcbiAgICBkcnlSdW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmV4cG9ydCBjb25zdCByZWFkbWVJbXByb3ZlbWVudFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgYmFzZVBhdGg6IHouc3RyaW5nKCkubWluKDEsIFwiYmFzZVBhdGggaXMgcmVxdWlyZWRcIiksXG4gICAgaW5jbHVkZUV4YW1wbGVzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB9KVxuICAuc3RyaWN0KCk7XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ export declare const analyzeRepoSchema: z.ZodObject<{
3
+ repoPath: z.ZodString;
4
+ includeTests: z.ZodDefault<z.ZodBoolean>;
5
+ includeDocs: z.ZodDefault<z.ZodBoolean>;
6
+ }, z.core.$strict>;
7
+ export declare const enumerateCapabilitiesSchema: z.ZodObject<{
8
+ repoPath: z.ZodString;
9
+ }, z.core.$strict>;
10
+ export declare const planFeatureSchema: z.ZodObject<{
11
+ feature: z.ZodString;
12
+ repoPath: z.ZodDefault<z.ZodString>;
13
+ }, z.core.$strict>;
14
+ export declare const documentCodeSchema: z.ZodObject<{
15
+ filePath: z.ZodString;
16
+ promptName: z.ZodOptional<z.ZodString>;
17
+ includePrompt: z.ZodDefault<z.ZodBoolean>;
18
+ includeCode: z.ZodDefault<z.ZodBoolean>;
19
+ includeMetadata: z.ZodDefault<z.ZodBoolean>;
20
+ additionalContext: z.ZodOptional<z.ZodString>;
21
+ encoding: z.ZodDefault<z.ZodString>;
22
+ }, z.core.$strict>;
23
+ export declare const codeChangeSchema: z.ZodObject<{
24
+ filePath: z.ZodString;
25
+ patch: z.ZodString;
26
+ dryRun: z.ZodDefault<z.ZodBoolean>;
27
+ showDiff: z.ZodDefault<z.ZodBoolean>;
28
+ diffContext: z.ZodDefault<z.ZodNumber>;
29
+ encoding: z.ZodDefault<z.ZodString>;
30
+ }, z.core.$strict>;
31
+ export declare const documentObjectSchema: z.ZodObject<{
32
+ basePath: z.ZodString;
33
+ objectType: z.ZodEnum<{
34
+ function: "function";
35
+ module: "module";
36
+ file: "file";
37
+ class: "class";
38
+ interface: "interface";
39
+ decorator: "decorator";
40
+ constant: "constant";
41
+ }>;
42
+ targetFile: z.ZodOptional<z.ZodString>;
43
+ includeContent: z.ZodDefault<z.ZodBoolean>;
44
+ }, z.core.$strict>;
45
+ export declare const coverageTaskSchema: z.ZodObject<{
46
+ basePath: z.ZodString;
47
+ coverage: z.ZodDefault<z.ZodNumber>;
48
+ dryRun: z.ZodDefault<z.ZodBoolean>;
49
+ }, z.core.$strict>;
50
+ export declare const readmeImprovementSchema: z.ZodObject<{
51
+ basePath: z.ZodString;
52
+ includeExamples: z.ZodDefault<z.ZodBoolean>;
53
+ }, z.core.$strict>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.codexPromptTemplates = void 0;
7
+ exports.buildCodexPromptTemplates = buildCodexPromptTemplates;
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const workspace_1 = require("./../workspace.cjs");
11
+ exports.codexPromptTemplates = [];
12
+ function buildCodexPromptTemplates() {
13
+ const root = (0, workspace_1.getWorkspaceRoot)();
14
+ const templates = [
15
+ {
16
+ name: "codex-prompt",
17
+ description: "Load a .codex prompt file by name (without extension) as markdown.",
18
+ uriTemplate: "codex-prompt://{name}",
19
+ mimeType: "text/markdown",
20
+ arguments: [
21
+ {
22
+ name: "name",
23
+ description: "Name of the prompt file inside .codex/prompts (without .md).",
24
+ required: true,
25
+ },
26
+ ],
27
+ load: async ({ name }) => {
28
+ const promptPath = (0, workspace_1.resolveInWorkspace)(root, path_1.default.join(".codex", "prompts", `${name}.md`));
29
+ if (!fs_1.default.existsSync(promptPath)) {
30
+ throw new Error(`Prompt .codex/prompts/${name}.md not found`);
31
+ }
32
+ const text = fs_1.default.readFileSync(promptPath, "utf8");
33
+ return { text, uri: `codex-prompt:///${name}` };
34
+ },
35
+ },
36
+ ];
37
+ exports.codexPromptTemplates.splice(0, exports.codexPromptTemplates.length, ...templates);
38
+ return exports.codexPromptTemplates;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXgtdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC90ZW1wbGF0ZXMvY29kZXgtdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQU9BLDhEQWlDQztBQXhDRCxnREFBd0I7QUFDeEIsNENBQW9CO0FBQ3BCLGtEQUFvRTtBQUd2RCxRQUFBLG9CQUFvQixHQUE2QixFQUFFLENBQUM7QUFFakUsU0FBZ0IseUJBQXlCO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUEsNEJBQWdCLEdBQUUsQ0FBQztJQUNoQyxNQUFNLFNBQVMsR0FBNkI7UUFDMUM7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixXQUFXLEVBQ1Qsb0VBQW9FO1lBQ3RFLFdBQVcsRUFBRSx1QkFBdUI7WUFDcEMsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLFdBQVcsRUFDVCw4REFBOEQ7b0JBQ2hFLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0Y7WUFDRCxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBQSw4QkFBa0IsRUFDbkMsSUFBSSxFQUNKLGNBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQzdDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxlQUFlLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztnQkFDRCxNQUFNLElBQUksR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsbUJBQW1CLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEQsQ0FBQztTQUNGO0tBQ0YsQ0FBQztJQUVGLDRCQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsNEJBQW9CLENBQUMsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDMUUsT0FBTyw0QkFBb0IsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGdldFdvcmtzcGFjZVJvb3QsIHJlc29sdmVJbldvcmtzcGFjZSB9IGZyb20gXCIuLi93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvbXB0UmVzb3VyY2VUZW1wbGF0ZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgY29kZXhQcm9tcHRUZW1wbGF0ZXM6IFByb21wdFJlc291cmNlVGVtcGxhdGVbXSA9IFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb2RleFByb21wdFRlbXBsYXRlcygpOiBQcm9tcHRSZXNvdXJjZVRlbXBsYXRlW10ge1xuICBjb25zdCByb290ID0gZ2V0V29ya3NwYWNlUm9vdCgpO1xuICBjb25zdCB0ZW1wbGF0ZXM6IFByb21wdFJlc291cmNlVGVtcGxhdGVbXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiBcImNvZGV4LXByb21wdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTG9hZCBhIC5jb2RleCBwcm9tcHQgZmlsZSBieSBuYW1lICh3aXRob3V0IGV4dGVuc2lvbikgYXMgbWFya2Rvd24uXCIsXG4gICAgICB1cmlUZW1wbGF0ZTogXCJjb2RleC1wcm9tcHQ6Ly97bmFtZX1cIixcbiAgICAgIG1pbWVUeXBlOiBcInRleHQvbWFya2Rvd25cIixcbiAgICAgIGFyZ3VtZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICBcIk5hbWUgb2YgdGhlIHByb21wdCBmaWxlIGluc2lkZSAuY29kZXgvcHJvbXB0cyAod2l0aG91dCAubWQpLlwiLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxvYWQ6IGFzeW5jICh7IG5hbWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9tcHRQYXRoID0gcmVzb2x2ZUluV29ya3NwYWNlKFxuICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgcGF0aC5qb2luKFwiLmNvZGV4XCIsIFwicHJvbXB0c1wiLCBgJHtuYW1lfS5tZGApXG4gICAgICAgICk7XG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwcm9tcHRQYXRoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvbXB0IC5jb2RleC9wcm9tcHRzLyR7bmFtZX0ubWQgbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dCA9IGZzLnJlYWRGaWxlU3luYyhwcm9tcHRQYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIHJldHVybiB7IHRleHQsIHVyaTogYGNvZGV4LXByb21wdDovLy8ke25hbWV9YCB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIGNvZGV4UHJvbXB0VGVtcGxhdGVzLnNwbGljZSgwLCBjb2RleFByb21wdFRlbXBsYXRlcy5sZW5ndGgsIC4uLnRlbXBsYXRlcyk7XG4gIHJldHVybiBjb2RleFByb21wdFRlbXBsYXRlcztcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import type { PromptResourceTemplate } from "../types";
2
+ export declare const codexPromptTemplates: PromptResourceTemplate[];
3
+ export declare function buildCodexPromptTemplates(): PromptResourceTemplate[];