@decaf-ts/mcp-server 0.0.2 → 0.0.4

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 (93) hide show
  1. package/LICENSE.md +86 -21
  2. package/README.md +13 -13
  3. package/dist/mcp-server.cjs +893 -187
  4. package/dist/mcp-server.esm.cjs +888 -180
  5. package/lib/McpWrapper.cjs +189 -0
  6. package/lib/McpWrapper.d.ts +101 -0
  7. package/lib/bin/cli.cjs +30 -54
  8. package/lib/bin/cli.d.ts +18 -44
  9. package/lib/constants.cjs +12 -0
  10. package/lib/constants.d.ts +8 -0
  11. package/lib/esm/McpWrapper.d.ts +101 -0
  12. package/lib/esm/McpWrapper.js +182 -0
  13. package/lib/esm/bin/cli.d.ts +18 -44
  14. package/lib/esm/bin/cli.js +28 -55
  15. package/lib/esm/constants.d.ts +8 -0
  16. package/lib/esm/constants.js +9 -0
  17. package/lib/esm/index.d.ts +5 -26
  18. package/lib/esm/index.js +6 -27
  19. package/lib/esm/mcp/index.d.ts +1 -0
  20. package/lib/esm/mcp/index.js +2 -0
  21. package/lib/esm/metadata.d.ts +9 -0
  22. package/lib/esm/metadata.js +22 -0
  23. package/lib/esm/modules/decoration/index.d.ts +0 -0
  24. package/lib/esm/modules/decoration/index.js +2 -0
  25. package/lib/esm/modules/mcp/decoration-assist.d.ts +39 -0
  26. package/lib/esm/modules/mcp/decoration-assist.js +353 -0
  27. package/lib/esm/modules/mcp/decorator-tools.d.ts +118 -0
  28. package/lib/esm/modules/mcp/decorator-tools.js +237 -0
  29. package/lib/esm/modules/mcp/index.d.ts +2 -0
  30. package/lib/esm/modules/mcp/index.js +3 -0
  31. package/lib/esm/modules/mcp/mcp-module.d.ts +230 -0
  32. package/lib/esm/modules/mcp/mcp-module.js +406 -0
  33. package/lib/esm/types.d.ts +15 -0
  34. package/lib/esm/types.js +2 -0
  35. package/lib/esm/utils.d.ts +54 -13
  36. package/lib/esm/utils.js +78 -15
  37. package/lib/index.cjs +6 -28
  38. package/lib/index.d.ts +5 -26
  39. package/lib/mcp/index.cjs +17 -0
  40. package/lib/mcp/index.d.ts +1 -0
  41. package/lib/metadata.cjs +25 -0
  42. package/lib/metadata.d.ts +9 -0
  43. package/lib/modules/decoration/index.cjs +2 -0
  44. package/lib/modules/decoration/index.d.ts +0 -0
  45. package/lib/modules/mcp/decoration-assist.cjs +360 -0
  46. package/lib/modules/mcp/decoration-assist.d.ts +39 -0
  47. package/lib/modules/mcp/decorator-tools.cjs +243 -0
  48. package/lib/modules/mcp/decorator-tools.d.ts +118 -0
  49. package/lib/modules/mcp/index.cjs +24 -0
  50. package/lib/modules/mcp/index.d.ts +2 -0
  51. package/lib/modules/mcp/mcp-module.cjs +452 -0
  52. package/lib/modules/mcp/mcp-module.d.ts +230 -0
  53. package/lib/types.cjs +3 -0
  54. package/lib/types.d.ts +15 -0
  55. package/lib/utils.cjs +116 -16
  56. package/lib/utils.d.ts +54 -13
  57. package/package.json +35 -7
  58. package/lib/esm/namespace/Class.d.ts +0 -74
  59. package/lib/esm/namespace/Class.js +0 -73
  60. package/lib/esm/namespace/Interface.d.ts +0 -17
  61. package/lib/esm/namespace/Interface.js +0 -2
  62. package/lib/esm/namespace/children/ChildClass.d.ts +0 -44
  63. package/lib/esm/namespace/children/ChildClass.js +0 -43
  64. package/lib/esm/namespace/children/ChildInterface.d.ts +0 -22
  65. package/lib/esm/namespace/children/ChildInterface.js +0 -2
  66. package/lib/esm/namespace/children/Enum.d.ts +0 -14
  67. package/lib/esm/namespace/children/Enum.js +0 -16
  68. package/lib/esm/namespace/children/function.d.ts +0 -31
  69. package/lib/esm/namespace/children/function.js +0 -33
  70. package/lib/esm/namespace/children/index.d.ts +0 -25
  71. package/lib/esm/namespace/children/index.js +0 -26
  72. package/lib/esm/namespace/index.d.ts +0 -18
  73. package/lib/esm/namespace/index.js +0 -19
  74. package/lib/esm/namespace/type.d.ts +0 -28
  75. package/lib/esm/namespace/type.js +0 -2
  76. package/lib/namespace/Class.cjs +0 -77
  77. package/lib/namespace/Class.d.ts +0 -74
  78. package/lib/namespace/Interface.cjs +0 -3
  79. package/lib/namespace/Interface.d.ts +0 -17
  80. package/lib/namespace/children/ChildClass.cjs +0 -47
  81. package/lib/namespace/children/ChildClass.d.ts +0 -44
  82. package/lib/namespace/children/ChildInterface.cjs +0 -3
  83. package/lib/namespace/children/ChildInterface.d.ts +0 -22
  84. package/lib/namespace/children/Enum.cjs +0 -19
  85. package/lib/namespace/children/Enum.d.ts +0 -14
  86. package/lib/namespace/children/function.cjs +0 -36
  87. package/lib/namespace/children/function.d.ts +0 -31
  88. package/lib/namespace/children/index.cjs +0 -42
  89. package/lib/namespace/children/index.d.ts +0 -25
  90. package/lib/namespace/index.cjs +0 -35
  91. package/lib/namespace/index.d.ts +0 -18
  92. package/lib/namespace/type.cjs +0 -3
  93. package/lib/namespace/type.d.ts +0 -28
@@ -0,0 +1,182 @@
1
+ /* istanbul ignore file */
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { MCP_FILE_NAME } from "./constants";
5
+ import { McpUtils } from "./utils";
6
+ import { FastMCP } from "fastmcp";
7
+ import { LoggedClass } from "@decaf-ts/logging";
8
+ import { VERSION } from "./metadata";
9
+ /**
10
+ * @description Utility class to handle CLI functionality from all Decaf modules
11
+ * @summary This class provides a wrapper around Commander.js to handle CLI commands from different Decaf modules.
12
+ * It crawls the filesystem to find CLI modules, loads them, and registers their commands.
13
+ *
14
+ * @param {string} [basePath] The base path to look for modules in. Defaults to `./`
15
+ * @param {number} [crawlLevels] Number of folder levels to crawl to find modules from the basePath. Defaults to 4
16
+ *
17
+ * @example
18
+ * // Create a new CLI wrapper and run it with custom options
19
+ * const cli = new CliWrapper('./src', 2);
20
+ * cli.run(process.argv).then(() => {
21
+ * console.log('CLI commands executed successfully');
22
+ * });
23
+ *
24
+ * @class McpWrapper
25
+ */
26
+ export class McpWrapper extends LoggedClass {
27
+ constructor(basePath = "./", crawlLevels = 4) {
28
+ super();
29
+ this.basePath = basePath;
30
+ this.crawlLevels = crawlLevels;
31
+ this.modules = {};
32
+ this.rootPath = path.resolve(__dirname, "..");
33
+ }
34
+ /**
35
+ * @description Retrieves and initializes the Commander Command object
36
+ * @summary Lazy-loads the Command object, initializing it with the package name, description, and version
37
+ * @return {Command} The initialized Command object
38
+ * @private
39
+ */
40
+ get mcp() {
41
+ if (!this._mcp) {
42
+ this._mcp = new FastMCP({
43
+ name: "decaf-ts MCP server",
44
+ instructions: "",
45
+ version: VERSION,
46
+ });
47
+ }
48
+ return this._mcp;
49
+ }
50
+ /**
51
+ * @description Loads and registers an mcp extension module from a file
52
+ * @summary Dynamically imports an mcp extension module from the specified file path, initializes it, and registers it in the modules collection
53
+ *
54
+ */
55
+ async load(server, filePath) {
56
+ const log = this.log.for(this.load);
57
+ let pkg, version, enrich;
58
+ try {
59
+ const res = await McpUtils.loadFromFile(filePath);
60
+ pkg = res.PACKAGE_NAME;
61
+ version = res.VERSION;
62
+ enrich = res.enrich;
63
+ }
64
+ catch (e) {
65
+ throw new Error(e.message || e);
66
+ }
67
+ try {
68
+ log.info(`Enriching mcp server with module ${pkg} v${version}`);
69
+ const result = enrich(server);
70
+ server = result instanceof Promise ? await result : result;
71
+ }
72
+ catch (e) {
73
+ throw new Error(`failed to enrich mcp with module ${pkg || "unnamed"} under ${filePath}: ${e instanceof Error ? e.message : e}`);
74
+ }
75
+ return {
76
+ mcp: server,
77
+ package: pkg,
78
+ version: version,
79
+ };
80
+ }
81
+ /**
82
+ * @description Finds and loads all CLI modules in the basePath
83
+ * @summary Uses the crawl method to find all CLI modules in the specified base path,
84
+ * then loads and registers each module as a subcommand
85
+ *
86
+ * @return {Promise<void>} A promise that resolves when all modules are loaded
87
+ *
88
+ * @private
89
+ * @mermaid
90
+ * sequenceDiagram
91
+ * participant CliWrapper
92
+ * participant Filesystem
93
+ * participant Module
94
+ *
95
+ * CliWrapper->>Filesystem: Join basePath with cwd
96
+ * CliWrapper->>CliWrapper: crawl(basePath, crawlLevels)
97
+ * CliWrapper-->>CliWrapper: modules[]
98
+ * loop For each module
99
+ * alt Not @decaf-ts/cli
100
+ * CliWrapper->>CliWrapper: load(module, cwd)
101
+ * CliWrapper-->>CliWrapper: name
102
+ * CliWrapper->>CliWrapper: Check if command exists
103
+ * alt Command doesn't exist
104
+ * CliWrapper->>Command: command(name).addCommand(modules[name])
105
+ * end
106
+ * end
107
+ * end
108
+ * CliWrapper->>Console: Log loaded modules
109
+ */
110
+ async boot() {
111
+ const log = this.log.for(this.boot);
112
+ const basePath = path.resolve(this.rootPath, this.basePath);
113
+ const modules = this.crawl(basePath, this.crawlLevels);
114
+ let server = this.mcp;
115
+ for (const module of modules) {
116
+ if (module.includes("@decaf-ts/mcp")) {
117
+ continue;
118
+ }
119
+ try {
120
+ const res = await this.load(server, module);
121
+ server = res.mcp;
122
+ }
123
+ catch (e) {
124
+ log.error(`Failed to load MCP configs for ${module}: ${e}`);
125
+ }
126
+ }
127
+ console.log(`loaded modules:\n${Object.keys(this.modules)
128
+ .map((k) => `- ${k}`)
129
+ .join("\n")}`);
130
+ return server;
131
+ }
132
+ /**
133
+ * @description Recursively searches for CLI module files in the directory structure
134
+ * @summary Crawls the basePath up to the specified number of folder levels to find files named according to CLI_FILE_NAME
135
+ *
136
+ * @param {string} basePath The absolute base path to start searching in
137
+ * @param {number} [levels=2] The maximum number of directory levels to crawl
138
+ * @return {string[]} An array of file paths to CLI modules
139
+ *
140
+ * @private
141
+ */
142
+ crawl(basePath, levels = 2) {
143
+ if (levels <= 0)
144
+ return [];
145
+ return fs.readdirSync(basePath).reduce((accum, file) => {
146
+ file = path.join(basePath, file);
147
+ if (fs.statSync(file).isDirectory()) {
148
+ accum.push(...this.crawl(file, levels - 1));
149
+ }
150
+ else if (file.match(new RegExp(`${MCP_FILE_NAME}.[cm]?js$`, "gm"))) {
151
+ accum.push(file);
152
+ }
153
+ return accum;
154
+ }, []);
155
+ }
156
+ /**
157
+ * @description Executes the CLI with the provided arguments
158
+ * @summary Boots the CLI by loading all modules, then parses and executes the command specified in the arguments
159
+ *
160
+ * @param {string[]} [args=process.argv] Command line arguments to parse and execute
161
+ * @return {Promise<void>} A promise that resolves when the command execution is complete
162
+ *
163
+ * @mermaid
164
+ * sequenceDiagram
165
+ * participant Client
166
+ * participant CliWrapper
167
+ * participant Command
168
+ *
169
+ * Client->>CliWrapper: run(args)
170
+ * CliWrapper->>CliWrapper: boot()
171
+ * Note over CliWrapper: Loads all modules
172
+ * CliWrapper->>Command: parseAsync(args)
173
+ * Command-->>CliWrapper: result
174
+ * CliWrapper-->>Client: result
175
+ */
176
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
177
+ async run(args = process.argv) {
178
+ const server = await this.boot();
179
+ await server.start({ transportType: "stdio" });
180
+ }
181
+ }
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWNwV3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9NY3BXcmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBCQUEwQjtBQUMxQixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBS3pDLFlBQ1UsV0FBbUIsSUFBSSxFQUN2QixjQUFjLENBQUM7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFIQSxhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFJO1FBTGpCLFlBQU8sR0FBMkIsRUFBRSxDQUFDO1FBUTNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBWSxHQUFHO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUM7Z0JBQ3RCLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLFlBQVksRUFBRSxFQUFFO2dCQUNoQixPQUFPLEVBQUUsT0FBYzthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxD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QztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBNQ1BfRklMRV9OQU1FIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBNY3BVdGlscyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBGYXN0TUNQIH0gZnJvbSBcImZhc3RtY3BcIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4vbWV0YWRhdGFcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVXRpbGl0eSBjbGFzcyB0byBoYW5kbGUgQ0xJIGZ1bmN0aW9uYWxpdHkgZnJvbSBhbGwgRGVjYWYgbW9kdWxlc1xuICogQHN1bW1hcnkgVGhpcyBjbGFzcyBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIENvbW1hbmRlci5qcyB0byBoYW5kbGUgQ0xJIGNvbW1hbmRzIGZyb20gZGlmZmVyZW50IERlY2FmIG1vZHVsZXMuXG4gKiBJdCBjcmF3bHMgdGhlIGZpbGVzeXN0ZW0gdG8gZmluZCBDTEkgbW9kdWxlcywgbG9hZHMgdGhlbSwgYW5kIHJlZ2lzdGVycyB0aGVpciBjb21tYW5kcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Jhc2VQYXRoXSBUaGUgYmFzZSBwYXRoIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uIERlZmF1bHRzIHRvIGAuL2BcbiAqIEBwYXJhbSB7bnVtYmVyfSBbY3Jhd2xMZXZlbHNdIE51bWJlciBvZiBmb2xkZXIgbGV2ZWxzIHRvIGNyYXdsIHRvIGZpbmQgbW9kdWxlcyBmcm9tIHRoZSBiYXNlUGF0aC4gRGVmYXVsdHMgdG8gNFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYSBuZXcgQ0xJIHdyYXBwZXIgYW5kIHJ1biBpdCB3aXRoIGN1c3RvbSBvcHRpb25zXG4gKiBjb25zdCBjbGkgPSBuZXcgQ2xpV3JhcHBlcignLi9zcmMnLCAyKTtcbiAqIGNsaS5ydW4ocHJvY2Vzcy5hcmd2KS50aGVuKCgpID0+IHtcbiAqICAgY29uc29sZS5sb2coJ0NMSSBjb21tYW5kcyBleGVjdXRlZCBzdWNjZXNzZnVsbHknKTtcbiAqIH0pO1xuICpcbiAqIEBjbGFzcyBNY3BXcmFwcGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBNY3BXcmFwcGVyIGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICBwcml2YXRlIF9tY3A/OiBGYXN0TUNQO1xuICBwcml2YXRlIG1vZHVsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSByb290UGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmFzZVBhdGg6IHN0cmluZyA9IFwiLi9cIixcbiAgICBwcml2YXRlIGNyYXdsTGV2ZWxzID0gNFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucm9vdFBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcIi4uXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYW5kIGluaXRpYWxpemVzIHRoZSBDb21tYW5kZXIgQ29tbWFuZCBvYmplY3RcbiAgICogQHN1bW1hcnkgTGF6eS1sb2FkcyB0aGUgQ29tbWFuZCBvYmplY3QsIGluaXRpYWxpemluZyBpdCB3aXRoIHRoZSBwYWNrYWdlIG5hbWUsIGRlc2NyaXB0aW9uLCBhbmQgdmVyc2lvblxuICAgKiBAcmV0dXJuIHtDb21tYW5kfSBUaGUgaW5pdGlhbGl6ZWQgQ29tbWFuZCBvYmplY3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0IG1jcCgpIHtcbiAgICBpZiAoIXRoaXMuX21jcCkge1xuICAgICAgdGhpcy5fbWNwID0gbmV3IEZhc3RNQ1Aoe1xuICAgICAgICBuYW1lOiBcImRlY2FmLXRzIE1DUCBzZXJ2ZXJcIixcbiAgICAgICAgaW5zdHJ1Y3Rpb25zOiBcIlwiLFxuICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OIGFzIGFueSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbWNwO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2FkcyBhbmQgcmVnaXN0ZXJzIGFuIG1jcCBleHRlbnNpb24gbW9kdWxlIGZyb20gYSBmaWxlXG4gICAqIEBzdW1tYXJ5IER5bmFtaWNhbGx5IGltcG9ydHMgYW4gbWNwIGV4dGVuc2lvbiBtb2R1bGUgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUgcGF0aCwgaW5pdGlhbGl6ZXMgaXQsIGFuZCByZWdpc3RlcnMgaXQgaW4gdGhlIG1vZHVsZXMgY29sbGVjdGlvblxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBsb2FkKFxuICAgIHNlcnZlcjogRmFzdE1DUCxcbiAgICBmaWxlUGF0aDogc3RyaW5nXG4gICk6IFByb21pc2U8eyBtY3A6IEZhc3RNQ1A7IHBhY2thZ2U6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5sb2FkKTtcblxuICAgIGxldCBwa2c6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCBlbnJpY2g6IGFueTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgTWNwVXRpbHMubG9hZEZyb21GaWxlKGZpbGVQYXRoKTtcbiAgICAgIHBrZyA9IHJlcy5QQUNLQUdFX05BTUU7XG4gICAgICB2ZXJzaW9uID0gcmVzLlZFUlNJT047XG4gICAgICBlbnJpY2ggPSByZXMuZW5yaWNoO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigoZSBhcyBhbnkpLm1lc3NhZ2UgfHwgKGUgYXMgYW55KSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsb2cuaW5mbyhgRW5yaWNoaW5nIG1jcCBzZXJ2ZXIgd2l0aCBtb2R1bGUgJHtwa2d9IHYke3ZlcnNpb259YCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBlbnJpY2goc2VydmVyKTtcbiAgICAgIHNlcnZlciA9IHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgPyBhd2FpdCByZXN1bHQgOiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgZmFpbGVkIHRvIGVucmljaCBtY3Agd2l0aCBtb2R1bGUgJHtwa2cgfHwgXCJ1bm5hbWVkXCJ9IHVuZGVyICR7ZmlsZVBhdGh9OiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGV9YFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG1jcDogc2VydmVyLFxuICAgICAgcGFja2FnZTogcGtnLFxuICAgICAgdmVyc2lvbjogdmVyc2lvbixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5kcyBhbmQgbG9hZHMgYWxsIENMSSBtb2R1bGVzIGluIHRoZSBiYXNlUGF0aFxuICAgKiBAc3VtbWFyeSBVc2VzIHRoZSBjcmF3bCBtZXRob2QgdG8gZmluZCBhbGwgQ0xJIG1vZHVsZXMgaW4gdGhlIHNwZWNpZmllZCBiYXNlIHBhdGgsXG4gICAqIHRoZW4gbG9hZHMgYW5kIHJlZ2lzdGVycyBlYWNoIG1vZHVsZSBhcyBhIHN1YmNvbW1hbmRcbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgbW9kdWxlcyBhcmUgbG9hZGVkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaVdyYXBwZXJcbiAgICogICBwYXJ0aWNpcGFudCBGaWxlc3lzdGVtXG4gICAqICAgcGFydGljaXBhbnQgTW9kdWxlXG4gICAqXG4gICAqICAgQ2xpV3JhcHBlci0+PkZpbGVzeXN0ZW06IEpvaW4gYmFzZVBhdGggd2l0aCBjd2RcbiAgICogICBDbGlXcmFwcGVyLT4+Q2xpV3JhcHBlcjogY3Jhd2woYmFzZVBhdGgsIGNyYXdsTGV2ZWxzKVxuICAgKiAgIENsaVdyYXBwZXItLT4+Q2xpV3JhcHBlcjogbW9kdWxlc1tdXG4gICAqICAgbG9vcCBGb3IgZWFjaCBtb2R1bGVcbiAgICogICAgIGFsdCBOb3QgQGRlY2FmLXRzL2NsaVxuICAgKiAgICAgICBDbGlXcmFwcGVyLT4+Q2xpV3JhcHBlcjogbG9hZChtb2R1bGUsIGN3ZClcbiAgICogICAgICAgQ2xpV3JhcHBlci0tPj5DbGlXcmFwcGVyOiBuYW1lXG4gICAqICAgICAgIENsaVdyYXBwZXItPj5DbGlXcmFwcGVyOiBDaGVjayBpZiBjb21tYW5kIGV4aXN0c1xuICAgKiAgICAgICBhbHQgQ29tbWFuZCBkb2Vzbid0IGV4aXN0XG4gICAqICAgICAgICAgQ2xpV3JhcHBlci0+PkNvbW1hbmQ6IGNvbW1hbmQobmFtZSkuYWRkQ29tbWFuZChtb2R1bGVzW25hbWVdKVxuICAgKiAgICAgICBlbmRcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKiAgIENsaVdyYXBwZXItPj5Db25zb2xlOiBMb2cgbG9hZGVkIG1vZHVsZXNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgYm9vdCgpIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5ib290KTtcblxuICAgIGNvbnN0IGJhc2VQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMucm9vdFBhdGgsIHRoaXMuYmFzZVBhdGgpO1xuICAgIGNvbnN0IG1vZHVsZXMgPSB0aGlzLmNyYXdsKGJhc2VQYXRoLCB0aGlzLmNyYXdsTGV2ZWxzKTtcbiAgICBsZXQgc2VydmVyID0gdGhpcy5tY3A7XG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlcykge1xuICAgICAgaWYgKG1vZHVsZS5pbmNsdWRlcyhcIkBkZWNhZi10cy9tY3BcIikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmxvYWQoc2VydmVyLCBtb2R1bGUpO1xuICAgICAgICBzZXJ2ZXIgPSByZXMubWNwO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICBsb2cuZXJyb3IoYEZhaWxlZCB0byBsb2FkIE1DUCBjb25maWdzIGZvciAke21vZHVsZX06ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgbG9hZGVkIG1vZHVsZXM6XFxuJHtPYmplY3Qua2V5cyh0aGlzLm1vZHVsZXMpXG4gICAgICAgIC5tYXAoKGspID0+IGAtICR7a31gKVxuICAgICAgICAuam9pbihcIlxcblwiKX1gXG4gICAgKTtcbiAgICByZXR1cm4gc2VydmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWN1cnNpdmVseSBzZWFyY2hlcyBmb3IgQ0xJIG1vZHVsZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZVxuICAgKiBAc3VtbWFyeSBDcmF3bHMgdGhlIGJhc2VQYXRoIHVwIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGZvbGRlciBsZXZlbHMgdG8gZmluZCBmaWxlcyBuYW1lZCBhY2NvcmRpbmcgdG8gQ0xJX0ZJTEVfTkFNRVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVBhdGggVGhlIGFic29sdXRlIGJhc2UgcGF0aCB0byBzdGFydCBzZWFyY2hpbmcgaW5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsZXZlbHM9Ml0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpcmVjdG9yeSBsZXZlbHMgdG8gY3Jhd2xcbiAgICogQHJldHVybiB7c3RyaW5nW119IEFuIGFycmF5IG9mIGZpbGUgcGF0aHMgdG8gQ0xJIG1vZHVsZXNcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3Jhd2woYmFzZVBhdGg6IHN0cmluZywgbGV2ZWxzOiBudW1iZXIgPSAyKSB7XG4gICAgaWYgKGxldmVscyA8PSAwKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGZzLnJlYWRkaXJTeW5jKGJhc2VQYXRoKS5yZWR1Y2UoKGFjY3VtOiBzdHJpbmdbXSwgZmlsZSkgPT4ge1xuICAgICAgZmlsZSA9IHBhdGguam9pbihiYXNlUGF0aCwgZmlsZSk7XG4gICAgICBpZiAoZnMuc3RhdFN5bmMoZmlsZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBhY2N1bS5wdXNoKC4uLnRoaXMuY3Jhd2woZmlsZSwgbGV2ZWxzIC0gMSkpO1xuICAgICAgfSBlbHNlIGlmIChmaWxlLm1hdGNoKG5ldyBSZWdFeHAoYCR7TUNQX0ZJTEVfTkFNRX0uW2NtXT9qcyRgLCBcImdtXCIpKSkge1xuICAgICAgICBhY2N1bS5wdXNoKGZpbGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgdGhlIENMSSB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHNcbiAgICogQHN1bW1hcnkgQm9vdHMgdGhlIENMSSBieSBsb2FkaW5nIGFsbCBtb2R1bGVzLCB0aGVuIHBhcnNlcyBhbmQgZXhlY3V0ZXMgdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGluIHRoZSBhcmd1bWVudHNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3M9cHJvY2Vzcy5hcmd2XSBDb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIHBhcnNlIGFuZCBleGVjdXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGNvbXBsZXRlXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IENsaVdyYXBwZXJcbiAgICogICBwYXJ0aWNpcGFudCBDb21tYW5kXG4gICAqXG4gICAqICAgQ2xpZW50LT4+Q2xpV3JhcHBlcjogcnVuKGFyZ3MpXG4gICAqICAgQ2xpV3JhcHBlci0+PkNsaVdyYXBwZXI6IGJvb3QoKVxuICAgKiAgIE5vdGUgb3ZlciBDbGlXcmFwcGVyOiBMb2FkcyBhbGwgbW9kdWxlc1xuICAgKiAgIENsaVdyYXBwZXItPj5Db21tYW5kOiBwYXJzZUFzeW5jKGFyZ3MpXG4gICAqICAgQ29tbWFuZC0tPj5DbGlXcmFwcGVyOiByZXN1bHRcbiAgICogICBDbGlXcmFwcGVyLS0+PkNsaWVudDogcmVzdWx0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIHJ1bihhcmdzOiBzdHJpbmdbXSA9IHByb2Nlc3MuYXJndikge1xuICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHRoaXMuYm9vdCgpO1xuICAgIGF3YWl0IHNlcnZlci5zdGFydCh7IHRyYW5zcG9ydFR5cGU6IFwic3RkaW9cIiB9KTtcbiAgfVxufVxuIl19
@@ -1,51 +1,25 @@
1
1
  /**
2
- * @namespace cli
3
- * @description This script demonstrates a basic command-line interface (CLI) that counts down from 60 seconds and then exits.
4
- * @summary A simple CLI countdown timer that serves as a minimal example of how to create a CLI application using TypeScript.
5
- *
6
- * All files in the ./src/bin folder will have `#!/usr/bin/env node` included at the beginning of the file
7
- *
2
+ * BIN_CALL_PLACEHOLDER - DO NOT REMOVE
3
+ */
4
+ /**
5
+ * @description Decaf-ts' CLI entry point
6
+ * @summary This file serves as the main executable entry point for the Decaf CLI. It creates a CliWrapper instance
7
+ * and runs it with the process arguments. The CLI will crawl the current working directory for files called
8
+ * MCP_FILE_NAME within the @decaf-ts namespace and load them as subcommands.
8
9
  *
9
10
  * @example
10
- * // Run the script
11
- * node cli.js
11
+ * // Run a module command
12
+ * $ npx decaf <module name> <module command> ...<module command options>
12
13
  *
13
- * @mermaid
14
- * sequenceDiagram
15
- * participant User
16
- * participant CLI
17
- * participant Timer
18
- * User->>CLI: Run script
19
- * CLI->>User: Display initial message
20
- * CLI->>Timer: Start countdown
21
- * loop Every second
22
- * Timer->>CLI: Decrement counter
23
- * CLI->>User: Display current count
24
- * end
25
- * Timer->>CLI: Counter reaches 0
26
- * CLI->>User: Exit process
14
+ * // Get help for a specific module
15
+ * $ npx decaf help <module name>
27
16
  *
28
- * @memberOf module:ts-workspace
29
- * @see {@link https://nodejs.org/api/process.html#process_process_exit_code|Node.js process.exit()}
30
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/setTimeout|MDN setTimeout()}
31
- */
32
- /**
33
- * @const counter
34
- * @name counter
35
- * @description The countdown timer, initialized to 60 seconds.
36
- * @summary Used to track the remaining time in the countdown.
37
- * @type {number}
38
- * @memberOf module:ts-workspace.cli
39
- */
40
- declare let counter: number;
41
- /**
42
- * @function iterator
43
- * @description A recursive function that manages the countdown timer.
44
- * @summary It uses setTimeout to create a delay of 1 second between each count.
45
- * The function decrements the counter, logs the current count, and calls itself
46
- * until the counter reaches 0. When the counter reaches 0, the process exits.
17
+ * // List all imported modules
18
+ * $ npx decaf list
19
+ *
20
+ * // Get general CLI help
21
+ * $ npx decaf help
47
22
  *
48
- * @return {void}
49
- * @memberOf module:ts-workspace.cli
23
+ * @memberOf module:MCP
50
24
  */
51
- declare function iterator(): void;
25
+ export {};
@@ -1,62 +1,35 @@
1
- "use strict";
2
1
  /**
3
- * @namespace cli
4
- * @description This script demonstrates a basic command-line interface (CLI) that counts down from 60 seconds and then exits.
5
- * @summary A simple CLI countdown timer that serves as a minimal example of how to create a CLI application using TypeScript.
6
- *
7
- * All files in the ./src/bin folder will have `#!/usr/bin/env node` included at the beginning of the file
8
- *
2
+ * BIN_CALL_PLACEHOLDER - DO NOT REMOVE
3
+ */
4
+ /**
5
+ * @description Decaf-ts' CLI entry point
6
+ * @summary This file serves as the main executable entry point for the Decaf CLI. It creates a CliWrapper instance
7
+ * and runs it with the process arguments. The CLI will crawl the current working directory for files called
8
+ * MCP_FILE_NAME within the @decaf-ts namespace and load them as subcommands.
9
9
  *
10
10
  * @example
11
- * // Run the script
12
- * node cli.js
11
+ * // Run a module command
12
+ * $ npx decaf <module name> <module command> ...<module command options>
13
13
  *
14
- * @mermaid
15
- * sequenceDiagram
16
- * participant User
17
- * participant CLI
18
- * participant Timer
19
- * User->>CLI: Run script
20
- * CLI->>User: Display initial message
21
- * CLI->>Timer: Start countdown
22
- * loop Every second
23
- * Timer->>CLI: Decrement counter
24
- * CLI->>User: Display current count
25
- * end
26
- * Timer->>CLI: Counter reaches 0
27
- * CLI->>User: Exit process
14
+ * // Get help for a specific module
15
+ * $ npx decaf help <module name>
28
16
  *
29
- * @memberOf module:ts-workspace
30
- * @see {@link https://nodejs.org/api/process.html#process_process_exit_code|Node.js process.exit()}
31
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/setTimeout|MDN setTimeout()}
32
- */
33
- /**
34
- * @const counter
35
- * @name counter
36
- * @description The countdown timer, initialized to 60 seconds.
37
- * @summary Used to track the remaining time in the countdown.
38
- * @type {number}
39
- * @memberOf module:ts-workspace.cli
40
- */
41
- let counter = 60;
42
- console.log(`This is a poor example of a cli. will stop in ${60} seconds`);
43
- /**
44
- * @function iterator
45
- * @description A recursive function that manages the countdown timer.
46
- * @summary It uses setTimeout to create a delay of 1 second between each count.
47
- * The function decrements the counter, logs the current count, and calls itself
48
- * until the counter reaches 0. When the counter reaches 0, the process exits.
17
+ * // List all imported modules
18
+ * $ npx decaf list
19
+ *
20
+ * // Get general CLI help
21
+ * $ npx decaf help
49
22
  *
50
- * @return {void}
51
- * @memberOf module:ts-workspace.cli
23
+ * @memberOf module:MCP
52
24
  */
53
- function iterator() {
54
- setTimeout(() => {
55
- if (!--counter)
56
- process.exit(1);
57
- console.log(counter);
58
- iterator();
59
- }, 1000);
60
- }
61
- iterator();
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFFSDs7Ozs7OztHQU9HO0FBQ0gsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFM0U7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxRQUFRO0lBQ2YsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQyxFQUFFLE9BQU87WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsUUFBUSxFQUFFLENBQUM7SUFDYixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBuYW1lc3BhY2UgY2xpXG4gKiBAZGVzY3JpcHRpb24gVGhpcyBzY3JpcHQgZGVtb25zdHJhdGVzIGEgYmFzaWMgY29tbWFuZC1saW5lIGludGVyZmFjZSAoQ0xJKSB0aGF0IGNvdW50cyBkb3duIGZyb20gNjAgc2Vjb25kcyBhbmQgdGhlbiBleGl0cy5cbiAqIEBzdW1tYXJ5IEEgc2ltcGxlIENMSSBjb3VudGRvd24gdGltZXIgdGhhdCBzZXJ2ZXMgYXMgYSBtaW5pbWFsIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhIENMSSBhcHBsaWNhdGlvbiB1c2luZyBUeXBlU2NyaXB0LlxuICpcbiAqIEFsbCBmaWxlcyBpbiB0aGUgLi9zcmMvYmluIGZvbGRlciB3aWxsIGhhdmUgYCMhL3Vzci9iaW4vZW52IG5vZGVgIGluY2x1ZGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVcbiAqXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJ1biB0aGUgc2NyaXB0XG4gKiBub2RlIGNsaS5qc1xuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgVXNlclxuICogICBwYXJ0aWNpcGFudCBDTElcbiAqICAgcGFydGljaXBhbnQgVGltZXJcbiAqICAgVXNlci0+PkNMSTogUnVuIHNjcmlwdFxuICogICBDTEktPj5Vc2VyOiBEaXNwbGF5IGluaXRpYWwgbWVzc2FnZVxuICogICBDTEktPj5UaW1lcjogU3RhcnQgY291bnRkb3duXG4gKiAgIGxvb3AgRXZlcnkgc2Vjb25kXG4gKiAgICAgVGltZXItPj5DTEk6IERlY3JlbWVudCBjb3VudGVyXG4gKiAgICAgQ0xJLT4+VXNlcjogRGlzcGxheSBjdXJyZW50IGNvdW50XG4gKiAgIGVuZFxuICogICBUaW1lci0+PkNMSTogQ291bnRlciByZWFjaGVzIDBcbiAqICAgQ0xJLT4+VXNlcjogRXhpdCBwcm9jZXNzXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp0cy13b3Jrc3BhY2VcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvcHJvY2Vzcy5odG1sI3Byb2Nlc3NfcHJvY2Vzc19leGl0X2NvZGV8Tm9kZS5qcyBwcm9jZXNzLmV4aXQoKX1cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9zZXRUaW1lb3V0fE1ETiBzZXRUaW1lb3V0KCl9XG4gKi9cblxuLyoqXG4gKiBAY29uc3QgY291bnRlclxuICogQG5hbWUgY291bnRlclxuICogQGRlc2NyaXB0aW9uIFRoZSBjb3VudGRvd24gdGltZXIsIGluaXRpYWxpemVkIHRvIDYwIHNlY29uZHMuXG4gKiBAc3VtbWFyeSBVc2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgdGltZSBpbiB0aGUgY291bnRkb3duLlxuICogQHR5cGUge251bWJlcn1cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dHMtd29ya3NwYWNlLmNsaVxuICovXG5sZXQgY291bnRlciA9IDYwO1xuY29uc29sZS5sb2coYFRoaXMgaXMgYSBwb29yIGV4YW1wbGUgb2YgYSBjbGkuIHdpbGwgc3RvcCBpbiAkezYwfSBzZWNvbmRzYCk7XG5cbi8qKlxuICogQGZ1bmN0aW9uIGl0ZXJhdG9yXG4gKiBAZGVzY3JpcHRpb24gQSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBtYW5hZ2VzIHRoZSBjb3VudGRvd24gdGltZXIuXG4gKiBAc3VtbWFyeSBJdCB1c2VzIHNldFRpbWVvdXQgdG8gY3JlYXRlIGEgZGVsYXkgb2YgMSBzZWNvbmQgYmV0d2VlbiBlYWNoIGNvdW50LlxuICogVGhlIGZ1bmN0aW9uIGRlY3JlbWVudHMgdGhlIGNvdW50ZXIsIGxvZ3MgdGhlIGN1cnJlbnQgY291bnQsIGFuZCBjYWxscyBpdHNlbGZcbiAqIHVudGlsIHRoZSBjb3VudGVyIHJlYWNoZXMgMC4gV2hlbiB0aGUgY291bnRlciByZWFjaGVzIDAsIHRoZSBwcm9jZXNzIGV4aXRzLlxuICpcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnRzLXdvcmtzcGFjZS5jbGlcbiAqL1xuZnVuY3Rpb24gaXRlcmF0b3IoKSB7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGlmICghLS1jb3VudGVyKSBwcm9jZXNzLmV4aXQoMSk7XG4gICAgY29uc29sZS5sb2coY291bnRlcik7XG4gICAgaXRlcmF0b3IoKTtcbiAgfSwgMTAwMCk7XG59XG5cbml0ZXJhdG9yKCk7XG4iXX0=
25
+ import { McpWrapper } from "../McpWrapper";
26
+ new McpWrapper()
27
+ .run(process.argv)
28
+ .then(() => {
29
+ console.log("Thank you for using decaf-ts' mcp server");
30
+ })
31
+ .catch((e) => {
32
+ console.error(`${e instanceof Error ? e.message : e}`);
33
+ process.exit(1);
34
+ });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLElBQUksVUFBVSxFQUFFO0tBQ2IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDakIsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7S0FDRCxLQUFLLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRTtJQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCSU5fQ0FMTF9QTEFDRUhPTERFUiAtIERPIE5PVCBSRU1PVkVcbiAqL1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjYWYtdHMnIENMSSBlbnRyeSBwb2ludFxuICogQHN1bW1hcnkgVGhpcyBmaWxlIHNlcnZlcyBhcyB0aGUgbWFpbiBleGVjdXRhYmxlIGVudHJ5IHBvaW50IGZvciB0aGUgRGVjYWYgQ0xJLiBJdCBjcmVhdGVzIGEgQ2xpV3JhcHBlciBpbnN0YW5jZVxuICogYW5kIHJ1bnMgaXQgd2l0aCB0aGUgcHJvY2VzcyBhcmd1bWVudHMuIFRoZSBDTEkgd2lsbCBjcmF3bCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgZmlsZXMgY2FsbGVkXG4gKiBNQ1BfRklMRV9OQU1FIHdpdGhpbiB0aGUgQGRlY2FmLXRzIG5hbWVzcGFjZSBhbmQgbG9hZCB0aGVtIGFzIHN1YmNvbW1hbmRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSdW4gYSBtb2R1bGUgY29tbWFuZFxuICogJCBucHggZGVjYWYgPG1vZHVsZSBuYW1lPiA8bW9kdWxlIGNvbW1hbmQ+IC4uLjxtb2R1bGUgY29tbWFuZCBvcHRpb25zPlxuICpcbiAqIC8vIEdldCBoZWxwIGZvciBhIHNwZWNpZmljIG1vZHVsZVxuICogJCBucHggZGVjYWYgaGVscCA8bW9kdWxlIG5hbWU+XG4gKlxuICogLy8gTGlzdCBhbGwgaW1wb3J0ZWQgbW9kdWxlc1xuICogJCBucHggZGVjYWYgbGlzdFxuICpcbiAqIC8vIEdldCBnZW5lcmFsIENMSSBoZWxwXG4gKiAkIG5weCBkZWNhZiBoZWxwXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpNQ1BcbiAqL1xuXG5pbXBvcnQgeyBNY3BXcmFwcGVyIH0gZnJvbSBcIi4uL01jcFdyYXBwZXJcIjtcbm5ldyBNY3BXcmFwcGVyKClcbiAgLnJ1bihwcm9jZXNzLmFyZ3YpXG4gIC50aGVuKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcIlRoYW5rIHlvdSBmb3IgdXNpbmcgZGVjYWYtdHMnIG1jcCBzZXJ2ZXJcIik7XG4gIH0pXG4gIC5jYXRjaCgoZTogdW5rbm93bikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH0pO1xuIl19
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @description The filename that identifies Decaf CLI modules
3
+ * @summary The standard filename for CLI module files where each library must export a single CliModule function
4
+ *
5
+ * @const MCP_FILE_NAME
6
+ * @memberOf module:MCP
7
+ */
8
+ export declare const MCP_FILE_NAME = "mcp-module";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @description The filename that identifies Decaf CLI modules
3
+ * @summary The standard filename for CLI module files where each library must export a single CliModule function
4
+ *
5
+ * @const MCP_FILE_NAME
6
+ * @memberOf module:MCP
7
+ */
8
+ export const MCP_FILE_NAME = "mcp-module";
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIGZpbGVuYW1lIHRoYXQgaWRlbnRpZmllcyBEZWNhZiBDTEkgbW9kdWxlc1xuICogQHN1bW1hcnkgVGhlIHN0YW5kYXJkIGZpbGVuYW1lIGZvciBDTEkgbW9kdWxlIGZpbGVzIHdoZXJlIGVhY2ggbGlicmFyeSBtdXN0IGV4cG9ydCBhIHNpbmdsZSBDbGlNb2R1bGUgZnVuY3Rpb25cbiAqXG4gKiBAY29uc3QgTUNQX0ZJTEVfTkFNRVxuICogQG1lbWJlck9mIG1vZHVsZTpNQ1BcbiAqL1xuZXhwb3J0IGNvbnN0IE1DUF9GSUxFX05BTUUgPSBcIm1jcC1tb2R1bGVcIjtcbiJdfQ==
@@ -1,31 +1,10 @@
1
1
  /**
2
- * @module ts-workspace
2
+ * @module MCP
3
3
  * @description This module serves as the main entry point for the ts-workspace library.
4
4
  * @summary Aggregates and exports functionality from various submodules and utilities within the project.
5
- *
6
- * The module includes:
7
- * 1. Utility functions and types from the "./utils" directory:
8
- * - These likely contain helper functions, common types, and shared functionality used throughout the project.
9
- * - May include operations for data manipulation, type checking, or other general-purpose utilities.
10
- *
11
- * 2. A namespace and related types from the "./namespace" directory:
12
- * - This could contain domain-specific code or a collection of related functionality.
13
- * - Might include interfaces, types, or classes that represent core concepts in the library.
14
- *
15
- * 3. A VERSION constant:
16
- * - Represents the current version of the module.
17
- * - Useful for version checking and compatibility purposes.
18
- *
19
- * This structure provides a clean and organized export of the module's functionality, allowing consumers
20
- * to easily import and use specific parts of the library as needed.
21
5
  */
6
+ export * from "./mcp";
7
+ export * from "./constants";
8
+ export * from "./McpWrapper";
9
+ export * from "./types";
22
10
  export * from "./utils";
23
- export * from "./namespace";
24
- /**
25
- * @const VERSION
26
- * @name VERSION
27
- * @description Represents the current version of the ts-workspace module.
28
- * @summary The actual version number is replaced during the build process.
29
- * @type {string}
30
- */
31
- export declare const VERSION = "0.0.2";
package/lib/esm/index.js CHANGED
@@ -1,32 +1,11 @@
1
1
  /**
2
- * @module ts-workspace
2
+ * @module MCP
3
3
  * @description This module serves as the main entry point for the ts-workspace library.
4
4
  * @summary Aggregates and exports functionality from various submodules and utilities within the project.
5
- *
6
- * The module includes:
7
- * 1. Utility functions and types from the "./utils" directory:
8
- * - These likely contain helper functions, common types, and shared functionality used throughout the project.
9
- * - May include operations for data manipulation, type checking, or other general-purpose utilities.
10
- *
11
- * 2. A namespace and related types from the "./namespace" directory:
12
- * - This could contain domain-specific code or a collection of related functionality.
13
- * - Might include interfaces, types, or classes that represent core concepts in the library.
14
- *
15
- * 3. A VERSION constant:
16
- * - Represents the current version of the module.
17
- * - Useful for version checking and compatibility purposes.
18
- *
19
- * This structure provides a clean and organized export of the module's functionality, allowing consumers
20
- * to easily import and use specific parts of the library as needed.
21
5
  */
6
+ export * from "./mcp";
7
+ export * from "./constants";
8
+ export * from "./McpWrapper";
9
+ export * from "./types";
22
10
  export * from "./utils";
23
- export * from "./namespace";
24
- /**
25
- * @const VERSION
26
- * @name VERSION
27
- * @description Represents the current version of the ts-workspace module.
28
- * @summary The actual version number is replaced during the build process.
29
- * @type {string}
30
- */
31
- export const VERSION = "0.0.2";
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFFNUI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB0cy13b3Jrc3BhY2VcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIG1vZHVsZSBzZXJ2ZXMgYXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB0cy13b3Jrc3BhY2UgbGlicmFyeS5cbiAqIEBzdW1tYXJ5IEFnZ3JlZ2F0ZXMgYW5kIGV4cG9ydHMgZnVuY3Rpb25hbGl0eSBmcm9tIHZhcmlvdXMgc3VibW9kdWxlcyBhbmQgdXRpbGl0aWVzIHdpdGhpbiB0aGUgcHJvamVjdC5cbiAqIFxuICogVGhlIG1vZHVsZSBpbmNsdWRlczpcbiAqIDEuIFV0aWxpdHkgZnVuY3Rpb25zIGFuZCB0eXBlcyBmcm9tIHRoZSBcIi4vdXRpbHNcIiBkaXJlY3Rvcnk6XG4gKiAgICAtIFRoZXNlIGxpa2VseSBjb250YWluIGhlbHBlciBmdW5jdGlvbnMsIGNvbW1vbiB0eXBlcywgYW5kIHNoYXJlZCBmdW5jdGlvbmFsaXR5IHVzZWQgdGhyb3VnaG91dCB0aGUgcHJvamVjdC5cbiAqICAgIC0gTWF5IGluY2x1ZGUgb3BlcmF0aW9ucyBmb3IgZGF0YSBtYW5pcHVsYXRpb24sIHR5cGUgY2hlY2tpbmcsIG9yIG90aGVyIGdlbmVyYWwtcHVycG9zZSB1dGlsaXRpZXMuXG4gKiBcbiAqIDIuIEEgbmFtZXNwYWNlIGFuZCByZWxhdGVkIHR5cGVzIGZyb20gdGhlIFwiLi9uYW1lc3BhY2VcIiBkaXJlY3Rvcnk6XG4gKiAgICAtIFRoaXMgY291bGQgY29udGFpbiBkb21haW4tc3BlY2lmaWMgY29kZSBvciBhIGNvbGxlY3Rpb24gb2YgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuICogICAgLSBNaWdodCBpbmNsdWRlIGludGVyZmFjZXMsIHR5cGVzLCBvciBjbGFzc2VzIHRoYXQgcmVwcmVzZW50IGNvcmUgY29uY2VwdHMgaW4gdGhlIGxpYnJhcnkuXG4gKiBcbiAqIDMuIEEgVkVSU0lPTiBjb25zdGFudDpcbiAqICAgIC0gUmVwcmVzZW50cyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUuXG4gKiAgICAtIFVzZWZ1bCBmb3IgdmVyc2lvbiBjaGVja2luZyBhbmQgY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy5cbiAqIFxuICogVGhpcyBzdHJ1Y3R1cmUgcHJvdmlkZXMgYSBjbGVhbiBhbmQgb3JnYW5pemVkIGV4cG9ydCBvZiB0aGUgbW9kdWxlJ3MgZnVuY3Rpb25hbGl0eSwgYWxsb3dpbmcgY29uc3VtZXJzXG4gKiB0byBlYXNpbHkgaW1wb3J0IGFuZCB1c2Ugc3BlY2lmaWMgcGFydHMgb2YgdGhlIGxpYnJhcnkgYXMgbmVlZGVkLlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYW1lc3BhY2VcIjtcblxuLyoqXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG5hbWUgVkVSU0lPTlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgdHMtd29ya3NwYWNlIG1vZHVsZS5cbiAqIEBzdW1tYXJ5IFRoZSBhY3R1YWwgdmVyc2lvbiBudW1iZXIgaXMgcmVwbGFjZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIE1DUFxuICogQGRlc2NyaXB0aW9uIFRoaXMgbW9kdWxlIHNlcnZlcyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIHRzLXdvcmtzcGFjZSBsaWJyYXJ5LlxuICogQHN1bW1hcnkgQWdncmVnYXRlcyBhbmQgZXhwb3J0cyBmdW5jdGlvbmFsaXR5IGZyb20gdmFyaW91cyBzdWJtb2R1bGVzIGFuZCB1dGlsaXRpZXMgd2l0aGluIHRoZSBwcm9qZWN0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL21jcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NY3BXcmFwcGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export { default, enrich, tools, setWorkspaceRoot, getWorkspaceRoot, buildResourceTemplates, buildDocPrompts, PACKAGE_NAME, VERSION } from "../modules/mcp";
@@ -0,0 +1,2 @@
1
+ export { default, enrich, tools, setWorkspaceRoot, getWorkspaceRoot, buildResourceTemplates, buildDocPrompts, PACKAGE_NAME, VERSION } from "../modules/mcp";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCwgZW5yaWNoLCB0b29scywgc2V0V29ya3NwYWNlUm9vdCwgZ2V0V29ya3NwYWNlUm9vdCwgYnVpbGRSZXNvdXJjZVRlbXBsYXRlcywgYnVpbGREb2NQcm9tcHRzLCBQQUNLQUdFX05BTUUsIFZFUlNJT04gfSBmcm9tIFwiLi4vbW9kdWxlcy9tY3BcIjtcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @const VERSION
3
+ * @name VERSION
4
+ * @description Represents the current version of the ts-workspace module.
5
+ * @summary The actual version number is replaced during the build process.
6
+ * @type {string}
7
+ */
8
+ export declare const VERSION = "0.0.3";
9
+ export declare const PACKAGE_NAME = "##PACKAGE_NAME##";
@@ -0,0 +1,22 @@
1
+ import { Metadata } from "@decaf-ts/decoration";
2
+ /**
3
+ * @const VERSION
4
+ * @name VERSION
5
+ * @description Represents the current version of the ts-workspace module.
6
+ * @summary The actual version number is replaced during the build process.
7
+ * @type {string}
8
+ */
9
+ export const VERSION = "0.0.3";
10
+ export const PACKAGE_NAME = "##PACKAGE_NAME##";
11
+ try {
12
+ Metadata.registerLibrary(PACKAGE_NAME, VERSION);
13
+ }
14
+ catch (error) {
15
+ if (error instanceof Error && error.message.includes("already")) {
16
+ // Ignore duplicate registration during tests/bundling checks.
17
+ }
18
+ else {
19
+ throw error;
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO0FBRS9DLElBQUksQ0FBQztJQUNILFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ2YsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDaEUsOERBQThEO0lBQ2hFLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBuYW1lIFZFUlNJT05cbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHRzLXdvcmtzcGFjZSBtb2R1bGUuXG4gKiBAc3VtbWFyeSBUaGUgYWN0dWFsIHZlcnNpb24gbnVtYmVyIGlzIHJlcGxhY2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9IFwiIyNQQUNLQUdFX05BTUUjI1wiO1xuXG50cnkge1xuICBNZXRhZGF0YS5yZWdpc3RlckxpYnJhcnkoUEFDS0FHRV9OQU1FLCBWRVJTSU9OKTtcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJhbHJlYWR5XCIpKSB7XG4gICAgLy8gSWdub3JlIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gZHVyaW5nIHRlc3RzL2J1bmRsaW5nIGNoZWNrcy5cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl19
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kZWNvcmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIiXX0=
@@ -0,0 +1,39 @@
1
+ import { z } from "zod";
2
+ import type { FastMCP } from "fastmcp";
3
+ declare const analyzeRepoSchema: z.ZodObject<{
4
+ repoPath: z.ZodString;
5
+ includeTests: z.ZodDefault<z.ZodBoolean>;
6
+ includeDocs: z.ZodDefault<z.ZodBoolean>;
7
+ }, "strict", z.ZodTypeAny, {
8
+ repoPath: string;
9
+ includeTests: boolean;
10
+ includeDocs: boolean;
11
+ }, {
12
+ repoPath: string;
13
+ includeTests?: boolean | undefined;
14
+ includeDocs?: boolean | undefined;
15
+ }>;
16
+ declare const enumerateCapabilitiesSchema: z.ZodObject<{
17
+ repoPath: z.ZodString;
18
+ }, "strict", z.ZodTypeAny, {
19
+ repoPath: string;
20
+ }, {
21
+ repoPath: string;
22
+ }>;
23
+ declare const planFeatureSchema: z.ZodObject<{
24
+ feature: z.ZodString;
25
+ repoPath: z.ZodDefault<z.ZodString>;
26
+ }, "strict", z.ZodTypeAny, {
27
+ repoPath: string;
28
+ feature: string;
29
+ }, {
30
+ feature: string;
31
+ repoPath?: string | undefined;
32
+ }>;
33
+ export type AnalyzeRepoArgs = z.infer<typeof analyzeRepoSchema>;
34
+ export type EnumerateCapabilitiesArgs = z.infer<typeof enumerateCapabilitiesSchema>;
35
+ export type PlanFeatureArgs = z.infer<typeof planFeatureSchema>;
36
+ export default function enrich(mcp: FastMCP): FastMCP<Record<string, unknown> | undefined>;
37
+ export declare const VERSION = "0.0.3";
38
+ export declare const PACKAGE_NAME = "##PACKAGE_NAME##/decoration-assist";
39
+ export {};