@houtini/lm 1.0.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 (260) hide show
  1. package/CHANGELOG.md +273 -0
  2. package/LICENSE +21 -0
  3. package/README.md +203 -0
  4. package/dist/cache/analysis-cache.d.ts +33 -0
  5. package/dist/cache/analysis-cache.d.ts.map +1 -0
  6. package/dist/cache/analysis-cache.js +56 -0
  7. package/dist/cache/analysis-cache.js.map +1 -0
  8. package/dist/cache/cache-manager.d.ts +29 -0
  9. package/dist/cache/cache-manager.d.ts.map +1 -0
  10. package/dist/cache/cache-manager.js +85 -0
  11. package/dist/cache/cache-manager.js.map +1 -0
  12. package/dist/cache/index.d.ts +16 -0
  13. package/dist/cache/index.d.ts.map +1 -0
  14. package/dist/cache/index.js +17 -0
  15. package/dist/cache/index.js.map +1 -0
  16. package/dist/cache/prompt-cache.d.ts +33 -0
  17. package/dist/cache/prompt-cache.d.ts.map +1 -0
  18. package/dist/cache/prompt-cache.js +61 -0
  19. package/dist/cache/prompt-cache.js.map +1 -0
  20. package/dist/config.d.ts +43 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +70 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/core/ThreeStagePromptManager.d.ts +39 -0
  25. package/dist/core/ThreeStagePromptManager.d.ts.map +1 -0
  26. package/dist/core/ThreeStagePromptManager.js +176 -0
  27. package/dist/core/ThreeStagePromptManager.js.map +1 -0
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +230 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/plugins/base-plugin.d.ts +47 -0
  33. package/dist/plugins/base-plugin.d.ts.map +1 -0
  34. package/dist/plugins/base-plugin.js +90 -0
  35. package/dist/plugins/base-plugin.js.map +1 -0
  36. package/dist/plugins/index.d.ts +58 -0
  37. package/dist/plugins/index.d.ts.map +1 -0
  38. package/dist/plugins/index.js +161 -0
  39. package/dist/plugins/index.js.map +1 -0
  40. package/dist/plugins/types.d.ts +5 -0
  41. package/dist/plugins/types.d.ts.map +1 -0
  42. package/dist/plugins/types.js +5 -0
  43. package/dist/plugins/types.js.map +1 -0
  44. package/dist/prompts/analyze/code-quality.d.ts +116 -0
  45. package/dist/prompts/analyze/code-quality.d.ts.map +1 -0
  46. package/dist/prompts/analyze/code-quality.js +433 -0
  47. package/dist/prompts/analyze/code-quality.js.map +1 -0
  48. package/dist/prompts/analyze/compare-integration.d.ts +130 -0
  49. package/dist/prompts/analyze/compare-integration.d.ts.map +1 -0
  50. package/dist/prompts/analyze/compare-integration.js +543 -0
  51. package/dist/prompts/analyze/compare-integration.js.map +1 -0
  52. package/dist/prompts/analyze/count-files.d.ts +109 -0
  53. package/dist/prompts/analyze/count-files.d.ts.map +1 -0
  54. package/dist/prompts/analyze/count-files.js +399 -0
  55. package/dist/prompts/analyze/count-files.js.map +1 -0
  56. package/dist/prompts/analyze/database-queries.d.ts +156 -0
  57. package/dist/prompts/analyze/database-queries.d.ts.map +1 -0
  58. package/dist/prompts/analyze/database-queries.js +759 -0
  59. package/dist/prompts/analyze/database-queries.js.map +1 -0
  60. package/dist/prompts/analyze/dependencies.d.ts +97 -0
  61. package/dist/prompts/analyze/dependencies.d.ts.map +1 -0
  62. package/dist/prompts/analyze/dependencies.js +333 -0
  63. package/dist/prompts/analyze/dependencies.js.map +1 -0
  64. package/dist/prompts/analyze/diff-signatures.d.ts +139 -0
  65. package/dist/prompts/analyze/diff-signatures.d.ts.map +1 -0
  66. package/dist/prompts/analyze/diff-signatures.js +702 -0
  67. package/dist/prompts/analyze/diff-signatures.js.map +1 -0
  68. package/dist/prompts/analyze/find-patterns.d.ts +128 -0
  69. package/dist/prompts/analyze/find-patterns.d.ts.map +1 -0
  70. package/dist/prompts/analyze/find-patterns.js +520 -0
  71. package/dist/prompts/analyze/find-patterns.js.map +1 -0
  72. package/dist/prompts/analyze/find-unused-css.d.ts +151 -0
  73. package/dist/prompts/analyze/find-unused-css.d.ts.map +1 -0
  74. package/dist/prompts/analyze/find-unused-css.js +754 -0
  75. package/dist/prompts/analyze/find-unused-css.js.map +1 -0
  76. package/dist/prompts/analyze/n8n-workflow.d.ts +137 -0
  77. package/dist/prompts/analyze/n8n-workflow.d.ts.map +1 -0
  78. package/dist/prompts/analyze/n8n-workflow.js +529 -0
  79. package/dist/prompts/analyze/n8n-workflow.js.map +1 -0
  80. package/dist/prompts/analyze/project-structure.d.ts +126 -0
  81. package/dist/prompts/analyze/project-structure.d.ts.map +1 -0
  82. package/dist/prompts/analyze/project-structure.js +569 -0
  83. package/dist/prompts/analyze/project-structure.js.map +1 -0
  84. package/dist/prompts/analyze/security-audit.d.ts +142 -0
  85. package/dist/prompts/analyze/security-audit.d.ts.map +1 -0
  86. package/dist/prompts/analyze/security-audit.js +637 -0
  87. package/dist/prompts/analyze/security-audit.js.map +1 -0
  88. package/dist/prompts/analyze/single-file.d.ts +162 -0
  89. package/dist/prompts/analyze/single-file.d.ts.map +1 -0
  90. package/dist/prompts/analyze/single-file.js +665 -0
  91. package/dist/prompts/analyze/single-file.js.map +1 -0
  92. package/dist/prompts/analyze/trace-execution.d.ts +126 -0
  93. package/dist/prompts/analyze/trace-execution.d.ts.map +1 -0
  94. package/dist/prompts/analyze/trace-execution.js +609 -0
  95. package/dist/prompts/analyze/trace-execution.js.map +1 -0
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +116 -0
  97. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +1 -0
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js +454 -0
  99. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +1 -0
  100. package/dist/prompts/analyze/wordpress-security.d.ts +146 -0
  101. package/dist/prompts/analyze/wordpress-security.d.ts.map +1 -0
  102. package/dist/prompts/analyze/wordpress-security.js +698 -0
  103. package/dist/prompts/analyze/wordpress-security.js.map +1 -0
  104. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +114 -0
  105. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +1 -0
  106. package/dist/prompts/analyze/wordpress-theme-audit.js +538 -0
  107. package/dist/prompts/analyze/wordpress-theme-audit.js.map +1 -0
  108. package/dist/prompts/custom/custom-prompt.d.ts +135 -0
  109. package/dist/prompts/custom/custom-prompt.d.ts.map +1 -0
  110. package/dist/prompts/custom/custom-prompt.js +419 -0
  111. package/dist/prompts/custom/custom-prompt.js.map +1 -0
  112. package/dist/prompts/fun/arcade-game.d.ts +152 -0
  113. package/dist/prompts/fun/arcade-game.d.ts.map +1 -0
  114. package/dist/prompts/fun/arcade-game.js +653 -0
  115. package/dist/prompts/fun/arcade-game.js.map +1 -0
  116. package/dist/prompts/fun/create_text_adventure.d.ts +100 -0
  117. package/dist/prompts/fun/create_text_adventure.d.ts.map +1 -0
  118. package/dist/prompts/fun/create_text_adventure.js +397 -0
  119. package/dist/prompts/fun/create_text_adventure.js.map +1 -0
  120. package/dist/prompts/fun/css-art-generator.d.ts +168 -0
  121. package/dist/prompts/fun/css-art-generator.d.ts.map +1 -0
  122. package/dist/prompts/fun/css-art-generator.js +827 -0
  123. package/dist/prompts/fun/css-art-generator.js.map +1 -0
  124. package/dist/prompts/generate/project-documentation.d.ts +137 -0
  125. package/dist/prompts/generate/project-documentation.d.ts.map +1 -0
  126. package/dist/prompts/generate/project-documentation.js +666 -0
  127. package/dist/prompts/generate/project-documentation.js.map +1 -0
  128. package/dist/prompts/generate/refactoring.d.ts +164 -0
  129. package/dist/prompts/generate/refactoring.d.ts.map +1 -0
  130. package/dist/prompts/generate/refactoring.js +621 -0
  131. package/dist/prompts/generate/refactoring.js.map +1 -0
  132. package/dist/prompts/generate/responsive-component.d.ts +147 -0
  133. package/dist/prompts/generate/responsive-component.d.ts.map +1 -0
  134. package/dist/prompts/generate/responsive-component.js +955 -0
  135. package/dist/prompts/generate/responsive-component.js.map +1 -0
  136. package/dist/prompts/generate/typescript-conversion.d.ts +144 -0
  137. package/dist/prompts/generate/typescript-conversion.d.ts.map +1 -0
  138. package/dist/prompts/generate/typescript-conversion.js +527 -0
  139. package/dist/prompts/generate/typescript-conversion.js.map +1 -0
  140. package/dist/prompts/generate/unit-tests.d.ts +139 -0
  141. package/dist/prompts/generate/unit-tests.d.ts.map +1 -0
  142. package/dist/prompts/generate/unit-tests.js +578 -0
  143. package/dist/prompts/generate/unit-tests.js.map +1 -0
  144. package/dist/prompts/generate/wordpress-plugin.d.ts +179 -0
  145. package/dist/prompts/generate/wordpress-plugin.d.ts.map +1 -0
  146. package/dist/prompts/generate/wordpress-plugin.js +763 -0
  147. package/dist/prompts/generate/wordpress-plugin.js.map +1 -0
  148. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +177 -0
  149. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +1 -0
  150. package/dist/prompts/generate/wordpress-theme-from-static.js +695 -0
  151. package/dist/prompts/generate/wordpress-theme-from-static.js.map +1 -0
  152. package/dist/prompts/shared/cache-manager.d.ts +45 -0
  153. package/dist/prompts/shared/cache-manager.d.ts.map +1 -0
  154. package/dist/prompts/shared/cache-manager.js +129 -0
  155. package/dist/prompts/shared/cache-manager.js.map +1 -0
  156. package/dist/prompts/shared/helpers.d.ts +39 -0
  157. package/dist/prompts/shared/helpers.d.ts.map +1 -0
  158. package/dist/prompts/shared/helpers.js +151 -0
  159. package/dist/prompts/shared/helpers.js.map +1 -0
  160. package/dist/prompts/shared/templates.d.ts +35 -0
  161. package/dist/prompts/shared/templates.d.ts.map +1 -0
  162. package/dist/prompts/shared/templates.js +77 -0
  163. package/dist/prompts/shared/templates.js.map +1 -0
  164. package/dist/prompts/shared/types.d.ts +112 -0
  165. package/dist/prompts/shared/types.d.ts.map +1 -0
  166. package/dist/prompts/shared/types.js +5 -0
  167. package/dist/prompts/shared/types.js.map +1 -0
  168. package/dist/prompts/system/find-unused-files.d.ts +106 -0
  169. package/dist/prompts/system/find-unused-files.d.ts.map +1 -0
  170. package/dist/prompts/system/find-unused-files.js +353 -0
  171. package/dist/prompts/system/find-unused-files.js.map +1 -0
  172. package/dist/security/index.d.ts +39 -0
  173. package/dist/security/index.d.ts.map +1 -0
  174. package/dist/security/index.js +46 -0
  175. package/dist/security/index.js.map +1 -0
  176. package/dist/security/integration-helpers.d.ts +121 -0
  177. package/dist/security/integration-helpers.d.ts.map +1 -0
  178. package/dist/security/integration-helpers.js +190 -0
  179. package/dist/security/integration-helpers.js.map +1 -0
  180. package/dist/security/output-encoder.d.ts +94 -0
  181. package/dist/security/output-encoder.d.ts.map +1 -0
  182. package/dist/security/output-encoder.js +295 -0
  183. package/dist/security/output-encoder.js.map +1 -0
  184. package/dist/security/prompt-injection-guard.d.ts +59 -0
  185. package/dist/security/prompt-injection-guard.d.ts.map +1 -0
  186. package/dist/security/prompt-injection-guard.js +249 -0
  187. package/dist/security/prompt-injection-guard.js.map +1 -0
  188. package/dist/security/sanitisation.d.ts +67 -0
  189. package/dist/security/sanitisation.d.ts.map +1 -0
  190. package/dist/security/sanitisation.js +398 -0
  191. package/dist/security/sanitisation.js.map +1 -0
  192. package/dist/security/security-service.d.ts +103 -0
  193. package/dist/security/security-service.d.ts.map +1 -0
  194. package/dist/security/security-service.js +303 -0
  195. package/dist/security/security-service.js.map +1 -0
  196. package/dist/security-config.d.ts +45 -0
  197. package/dist/security-config.d.ts.map +1 -0
  198. package/dist/security-config.js +63 -0
  199. package/dist/security-config.js.map +1 -0
  200. package/dist/system/function-list.d.ts +61 -0
  201. package/dist/system/function-list.d.ts.map +1 -0
  202. package/dist/system/function-list.js +111 -0
  203. package/dist/system/function-list.js.map +1 -0
  204. package/dist/system/function-registry.d.ts +23 -0
  205. package/dist/system/function-registry.d.ts.map +1 -0
  206. package/dist/system/function-registry.js +136 -0
  207. package/dist/system/function-registry.js.map +1 -0
  208. package/dist/system/health-check.d.ts +33 -0
  209. package/dist/system/health-check.d.ts.map +1 -0
  210. package/dist/system/health-check.js +98 -0
  211. package/dist/system/health-check.js.map +1 -0
  212. package/dist/system/path-resolver.d.ts +55 -0
  213. package/dist/system/path-resolver.d.ts.map +1 -0
  214. package/dist/system/path-resolver.js +90 -0
  215. package/dist/system/path-resolver.js.map +1 -0
  216. package/dist/templates/plugin-template.d.ts +121 -0
  217. package/dist/templates/plugin-template.d.ts.map +1 -0
  218. package/dist/templates/plugin-template.js +450 -0
  219. package/dist/templates/plugin-template.js.map +1 -0
  220. package/dist/types/chunking-types.d.ts +88 -0
  221. package/dist/types/chunking-types.d.ts.map +1 -0
  222. package/dist/types/chunking-types.js +18 -0
  223. package/dist/types/chunking-types.js.map +1 -0
  224. package/dist/types/prompt-stages.d.ts +42 -0
  225. package/dist/types/prompt-stages.d.ts.map +1 -0
  226. package/dist/types/prompt-stages.js +6 -0
  227. package/dist/types/prompt-stages.js.map +1 -0
  228. package/dist/types.d.ts +46 -0
  229. package/dist/types.d.ts.map +1 -0
  230. package/dist/types.js +6 -0
  231. package/dist/types.js.map +1 -0
  232. package/dist/utils/css-parser.d.ts +26 -0
  233. package/dist/utils/css-parser.d.ts.map +1 -0
  234. package/dist/utils/css-parser.js +117 -0
  235. package/dist/utils/css-parser.js.map +1 -0
  236. package/dist/utils/path-resolver.d.ts +13 -0
  237. package/dist/utils/path-resolver.d.ts.map +1 -0
  238. package/dist/utils/path-resolver.js +78 -0
  239. package/dist/utils/path-resolver.js.map +1 -0
  240. package/dist/utils/plugin-utilities.d.ts +171 -0
  241. package/dist/utils/plugin-utilities.d.ts.map +1 -0
  242. package/dist/utils/plugin-utilities.js +221 -0
  243. package/dist/utils/plugin-utilities.js.map +1 -0
  244. package/dist/utils/streamHandler.d.ts +3 -0
  245. package/dist/utils/streamHandler.d.ts.map +1 -0
  246. package/dist/utils/streamHandler.js +137 -0
  247. package/dist/utils/streamHandler.js.map +1 -0
  248. package/dist/validation/output-validator.d.ts +136 -0
  249. package/dist/validation/output-validator.d.ts.map +1 -0
  250. package/dist/validation/output-validator.js +262 -0
  251. package/dist/validation/output-validator.js.map +1 -0
  252. package/dist/validation/response-factory.d.ts +44 -0
  253. package/dist/validation/response-factory.d.ts.map +1 -0
  254. package/dist/validation/response-factory.js +202 -0
  255. package/dist/validation/response-factory.js.map +1 -0
  256. package/dist/validation/schemas.d.ts +519 -0
  257. package/dist/validation/schemas.d.ts.map +1 -0
  258. package/dist/validation/schemas.js +6 -0
  259. package/dist/validation/schemas.js.map +1 -0
  260. package/package.json +72 -0
package/dist/index.js ADDED
@@ -0,0 +1,230 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Houtini LM MCP Server - Plugin Architecture v1.0
4
+ * Complete plugin-based replacement of legacy switch-case system
5
+ */
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
+ import { LMStudioClient } from '@lmstudio/sdk';
10
+ import path from 'path';
11
+ import { fileURLToPath } from 'url';
12
+ import { config } from './config.js';
13
+ import { PluginRegistry } from './plugins/index.js';
14
+ // Get current directory for plugin loading
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = path.dirname(__filename);
17
+ class HoutiniLMServer {
18
+ constructor() {
19
+ this.pluginsInitialized = false;
20
+ this.server = new Server({
21
+ name: 'houtini-lm',
22
+ version: '1.0.0',
23
+ }, {
24
+ capabilities: {
25
+ tools: {},
26
+ resources: {},
27
+ prompts: {}
28
+ },
29
+ });
30
+ // Note: Security validation will be done during server start
31
+ this.lmStudioClient = new LMStudioClient({
32
+ baseUrl: config.lmStudioUrl,
33
+ });
34
+ this.pluginLoader = PluginRegistry.getInstance();
35
+ this.setupHandlers();
36
+ // Error handling
37
+ this.server.onerror = (error) => {
38
+ // Silent error handling for MCP protocol compliance
39
+ };
40
+ process.on('SIGINT', async () => {
41
+ await this.server.close();
42
+ process.exit(0);
43
+ });
44
+ }
45
+ /**
46
+ * Validate security configuration at startup
47
+ * Fails fast if environment variables are not properly configured
48
+ */
49
+ async validateSecurityConfiguration() {
50
+ try {
51
+ const { securityConfig } = await import('./security-config.js');
52
+ const allowedDirs = securityConfig.getAllowedDirectories();
53
+ // Validate each directory exists and is accessible
54
+ const fs = await import('fs');
55
+ for (const dir of allowedDirs) {
56
+ try {
57
+ const stat = fs.statSync(dir);
58
+ if (!stat.isDirectory()) {
59
+ console.warn(`[WARNING] Allowed path is not a directory: ${dir}`);
60
+ }
61
+ }
62
+ catch (error) {
63
+ console.warn(`[WARNING] Cannot access allowed directory: ${dir} (${error.message})`);
64
+ }
65
+ }
66
+ }
67
+ catch (error) {
68
+ console.error('SECURITY CONFIGURATION ERROR:', error.message);
69
+ console.error('Please set the LLM_MCP_ALLOWED_DIRS environment variable in your Claude Desktop configuration.');
70
+ console.error('Example: "LLM_MCP_ALLOWED_DIRS": "C:\\\\MCP,C:\\\\dev,C:\\\\Users\\\\YourName\\\\Documents"');
71
+ process.exit(1);
72
+ }
73
+ }
74
+ /**
75
+ * Initialize plugins from directories
76
+ */
77
+ async initializePlugins() {
78
+ if (this.pluginsInitialized)
79
+ return;
80
+ try {
81
+ // Removed console.log to avoid JSON-RPC interference
82
+ // Load plugins from prompts directory
83
+ const promptsDir = path.join(__dirname, 'prompts');
84
+ await this.pluginLoader.loadPlugins(promptsDir);
85
+ // Load system plugins
86
+ await this.loadSystemPlugins();
87
+ this.pluginsInitialized = true;
88
+ // Silent initialization - no console output
89
+ }
90
+ catch (error) {
91
+ // Silent error handling to avoid JSON-RPC interference
92
+ throw error;
93
+ }
94
+ }
95
+ /**
96
+ * Load system plugins from the system directory
97
+ */
98
+ async loadSystemPlugins() {
99
+ try {
100
+ const systemDir = path.join(__dirname, 'system');
101
+ const { promises: fs } = await import('fs');
102
+ const files = await fs.readdir(systemDir);
103
+ for (const file of files) {
104
+ if (file.endsWith('.js')) { // Only load .js files, skip .d.ts
105
+ const filePath = path.join(systemDir, file);
106
+ await this.loadSystemPlugin(filePath);
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ // Silent error handling to avoid JSON-RPC interference
112
+ // console.error('[Plugin Server] Error loading system plugins:', error);
113
+ }
114
+ }
115
+ /**
116
+ * Load a single system plugin
117
+ */
118
+ async loadSystemPlugin(filePath) {
119
+ try {
120
+ // Convert to proper file:// URL for Windows
121
+ const fileUrl = `file:///${filePath.replace(/\\/g, '/')}`;
122
+ const module = await import(fileUrl);
123
+ const PluginClass = module.default;
124
+ if (PluginClass && typeof PluginClass === 'function') {
125
+ const plugin = new PluginClass();
126
+ this.pluginLoader.registerPlugin(plugin);
127
+ // Removed console.log to avoid JSON-RPC interference
128
+ }
129
+ }
130
+ catch (error) {
131
+ // Silent error handling to avoid JSON-RPC interference
132
+ // console.error(`[Plugin Server] Error loading system plugin ${filePath}:`, error);
133
+ }
134
+ }
135
+ /**
136
+ * Setup MCP request handlers
137
+ */
138
+ setupHandlers() {
139
+ // Tool listing handler - returns plugin-generated tool definitions
140
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
141
+ if (!this.pluginsInitialized) {
142
+ await this.initializePlugins();
143
+ }
144
+ const tools = this.pluginLoader.getPlugins().map(plugin => plugin.getToolDefinition());
145
+ // Silent operation - no console output
146
+ return { tools };
147
+ });
148
+ // Resources handler (empty for now)
149
+ this.server.setRequestHandler(ListResourcesRequestSchema, async () => ({
150
+ resources: [],
151
+ }));
152
+ // Prompts handler (empty for now)
153
+ this.server.setRequestHandler(ListPromptsRequestSchema, async () => ({
154
+ prompts: [],
155
+ }));
156
+ // Main tool handler - routes all calls through plugin system
157
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
158
+ const { name: toolName, arguments: args } = request.params;
159
+ // Silent operation - no console output unless error
160
+ if (!this.pluginsInitialized) {
161
+ await this.initializePlugins();
162
+ }
163
+ try {
164
+ // Execute plugin
165
+ const result = await this.pluginLoader.executePlugin(toolName, args, this.lmStudioClient);
166
+ // Silent success - no console output
167
+ // Return standardized MCP response
168
+ return {
169
+ content: [
170
+ {
171
+ type: 'text',
172
+ text: typeof result === 'string' ? result : JSON.stringify(result, null, 2)
173
+ }
174
+ ]
175
+ };
176
+ }
177
+ catch (error) {
178
+ // Silent error handling - only return error response without logging
179
+ // Return error as MCP response
180
+ return {
181
+ content: [
182
+ {
183
+ type: 'text',
184
+ text: JSON.stringify({
185
+ error: true,
186
+ message: error.message || 'Tool execution failed',
187
+ tool: toolName,
188
+ timestamp: new Date().toISOString()
189
+ }, null, 2)
190
+ }
191
+ ]
192
+ };
193
+ }
194
+ });
195
+ }
196
+ /**
197
+ * Get plugin statistics
198
+ */
199
+ getPluginStats() {
200
+ const plugins = this.pluginLoader.getPlugins();
201
+ const categories = {
202
+ analyze: this.pluginLoader.getPluginsByCategory('analyze').length,
203
+ generate: this.pluginLoader.getPluginsByCategory('generate').length,
204
+ system: this.pluginLoader.getPluginsByCategory('system').length
205
+ };
206
+ return {
207
+ totalPlugins: plugins.length,
208
+ categories,
209
+ pluginNames: plugins.map(p => p.name)
210
+ };
211
+ }
212
+ /**
213
+ * Start the server
214
+ */
215
+ async start() {
216
+ // SECURITY: Validate configuration before starting server
217
+ await this.validateSecurityConfiguration();
218
+ // Silent startup after security validation - no console output to avoid JSON-RPC interference
219
+ const transport = new StdioServerTransport();
220
+ await this.server.connect(transport);
221
+ // Server started silently
222
+ }
223
+ }
224
+ // Start the server
225
+ const server = new HoutiniLMServer();
226
+ server.start().catch((error) => {
227
+ // Silent error handling - only exit on critical startup failure
228
+ process.exit(1);
229
+ });
230
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Base Plugin Class - Modern v4.2 Architecture
3
+ * All plugins extend from this base class with modern patterns
4
+ */
5
+ import { IPromptPlugin } from '../prompts/shared/types.js';
6
+ import { PromptStages } from '../types/prompt-stages.js';
7
+ export declare abstract class BasePlugin implements IPromptPlugin {
8
+ abstract name: string;
9
+ abstract category: 'analyze' | 'generate' | 'multifile' | 'custom' | 'system';
10
+ abstract description: string;
11
+ abstract parameters: {
12
+ [key: string]: any;
13
+ };
14
+ /**
15
+ * Execute the plugin with given parameters
16
+ * MODERN v4.2: Must use withSecurity wrapper
17
+ */
18
+ abstract execute(params: any, llmClient: any): Promise<any>;
19
+ /**
20
+ * Get the 3-stage prompt structure for context management
21
+ * MODERN v4.2: Required method for all plugins
22
+ */
23
+ abstract getPromptStages(params: any): PromptStages;
24
+ /**
25
+ * Validate parameters before execution
26
+ * Override this method for custom validation
27
+ */
28
+ validateParams(params: any): void;
29
+ /**
30
+ * Apply default values to parameters
31
+ */
32
+ applyDefaults(params: any): any;
33
+ /**
34
+ * Get tool definition for MCP registration
35
+ */
36
+ getToolDefinition(): any;
37
+ /**
38
+ * Convert parameter definitions to JSON schema
39
+ */
40
+ private convertParametersToSchema;
41
+ /**
42
+ * Get list of required parameter names
43
+ */
44
+ private getRequiredParameters;
45
+ }
46
+ export default BasePlugin;
47
+ //# sourceMappingURL=base-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/base-plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAuB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,8BAAsB,UAAW,YAAW,aAAa;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC9E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAE5C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAE3D;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY;IAInD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IA4BjC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IAY/B;;OAEG;IACH,iBAAiB,IAAI,GAAG;IAYxB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAK9B;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Base Plugin Class - Modern v4.2 Architecture
3
+ * All plugins extend from this base class with modern patterns
4
+ */
5
+ export class BasePlugin {
6
+ /**
7
+ * Validate parameters before execution
8
+ * Override this method for custom validation
9
+ */
10
+ validateParams(params) {
11
+ // Check required parameters
12
+ for (const [key, definition] of Object.entries(this.parameters)) {
13
+ if (definition.required && !(key in params)) {
14
+ throw new Error(`Missing required parameter: ${key}`);
15
+ }
16
+ // Type validation
17
+ if (key in params && definition.type) {
18
+ const actualType = typeof params[key];
19
+ const expectedType = definition.type;
20
+ if (expectedType === 'array' && !Array.isArray(params[key])) {
21
+ throw new Error(`Parameter ${key} must be an array`);
22
+ }
23
+ else if (expectedType !== 'array' && actualType !== expectedType) {
24
+ throw new Error(`Parameter ${key} must be of type ${expectedType}`);
25
+ }
26
+ }
27
+ // Enum validation
28
+ if (key in params && definition.enum) {
29
+ if (!definition.enum.includes(params[key])) {
30
+ throw new Error(`Parameter ${key} must be one of: ${definition.enum.join(', ')}`);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ /**
36
+ * Apply default values to parameters
37
+ */
38
+ applyDefaults(params) {
39
+ const result = { ...params };
40
+ for (const [key, definition] of Object.entries(this.parameters)) {
41
+ if (!(key in result) && 'default' in definition) {
42
+ result[key] = definition.default;
43
+ }
44
+ }
45
+ return result;
46
+ }
47
+ /**
48
+ * Get tool definition for MCP registration
49
+ */
50
+ getToolDefinition() {
51
+ return {
52
+ name: this.name,
53
+ description: this.description,
54
+ inputSchema: {
55
+ type: 'object',
56
+ properties: this.convertParametersToSchema(),
57
+ required: this.getRequiredParameters()
58
+ }
59
+ };
60
+ }
61
+ /**
62
+ * Convert parameter definitions to JSON schema
63
+ */
64
+ convertParametersToSchema() {
65
+ const schema = {};
66
+ for (const [key, definition] of Object.entries(this.parameters)) {
67
+ schema[key] = {
68
+ type: definition.type,
69
+ description: definition.description
70
+ };
71
+ if (definition.enum) {
72
+ schema[key].enum = definition.enum;
73
+ }
74
+ if (definition.default !== undefined) {
75
+ schema[key].default = definition.default;
76
+ }
77
+ }
78
+ return schema;
79
+ }
80
+ /**
81
+ * Get list of required parameter names
82
+ */
83
+ getRequiredParameters() {
84
+ return Object.entries(this.parameters)
85
+ .filter(([_, def]) => def.required)
86
+ .map(([key, _]) => key);
87
+ }
88
+ }
89
+ export default BasePlugin;
90
+ //# sourceMappingURL=base-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-plugin.js","sourceRoot":"","sources":["../../src/plugins/base-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Plugin Loader and Registry
3
+ * Dynamically loads and manages all prompt plugins
4
+ * Modern v4.2 architecture - plugins handle their own context management
5
+ */
6
+ import { IPromptPlugin } from './types.js';
7
+ export declare class PluginLoader {
8
+ private plugins;
9
+ private categories;
10
+ constructor();
11
+ /**
12
+ * Load all plugins from the prompts directory
13
+ */
14
+ loadPlugins(promptsDir: string): Promise<void>;
15
+ /**
16
+ * Load a single plugin file
17
+ */
18
+ private loadPlugin;
19
+ /**
20
+ * Load system plugins (cache management, health check)
21
+ */
22
+ private loadSystemPlugins;
23
+ /**
24
+ * Register a plugin
25
+ */
26
+ registerPlugin(plugin: IPromptPlugin): void;
27
+ /**
28
+ * Get a plugin by name
29
+ */
30
+ getPlugin(name: string): IPromptPlugin | undefined;
31
+ /**
32
+ * Get all plugins
33
+ */
34
+ getPlugins(): IPromptPlugin[];
35
+ /**
36
+ * Get plugins by category
37
+ */
38
+ getPluginsByCategory(category: 'analyze' | 'generate' | 'system'): IPromptPlugin[];
39
+ /**
40
+ * Get plugin names
41
+ */
42
+ getPluginNames(): string[];
43
+ /**
44
+ * Execute a plugin by name
45
+ * Modern v4.2: Each plugin handles its own context management with ThreeStagePromptManager
46
+ */
47
+ executePlugin(name: string, params: any, llmClient: any): Promise<any>;
48
+ }
49
+ export declare class PluginRegistry {
50
+ private static instance;
51
+ static getInstance(): PluginLoader;
52
+ }
53
+ declare const _default: {
54
+ PluginLoader: typeof PluginLoader;
55
+ PluginRegistry: typeof PluginRegistry;
56
+ };
57
+ export default _default;
58
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK3C,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,UAAU,CAA2C;;IAW7D;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBpD;;OAEG;YACW,UAAU;IA0BxB;;OAEG;YACW,iBAAiB;IAoB/B;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAe3C;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD;;OAEG;IACH,UAAU,IAAI,aAAa,EAAE;IAI7B;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,EAAE;IAIlF;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAiB7E;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IAEtC,MAAM,CAAC,WAAW,IAAI,YAAY;CAMnC;;;;;AAED,wBAGE"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Plugin Loader and Registry
3
+ * Dynamically loads and manages all prompt plugins
4
+ * Modern v4.2 architecture - plugins handle their own context management
5
+ */
6
+ import { BasePlugin } from './base-plugin.js';
7
+ import path from 'path';
8
+ import { promises as fs } from 'fs';
9
+ export class PluginLoader {
10
+ constructor() {
11
+ this.plugins = new Map();
12
+ this.categories = new Map();
13
+ // Initialize category maps
14
+ this.categories.set('analyze', []);
15
+ this.categories.set('generate', []);
16
+ this.categories.set('custom', []);
17
+ this.categories.set('system', []);
18
+ this.categories.set('fun', []);
19
+ }
20
+ /**
21
+ * Load all plugins from the prompts directory
22
+ */
23
+ async loadPlugins(promptsDir) {
24
+ const categories = ['analyze', 'generate', 'custom', 'system', 'fun'];
25
+ for (const category of categories) {
26
+ const categoryPath = path.join(promptsDir, category);
27
+ try {
28
+ const files = await fs.readdir(categoryPath);
29
+ for (const file of files) {
30
+ if (file.endsWith('.js') && !file.includes('.test.')) { // Only load .js files, skip .d.ts and tests
31
+ await this.loadPlugin(path.join(categoryPath, file), category);
32
+ }
33
+ }
34
+ }
35
+ catch (error) {
36
+ // Silent error handling to avoid JSON-RPC interference
37
+ // console.error(`Error loading plugins from ${category}:`, error);
38
+ }
39
+ }
40
+ // Load system plugins from shared (cache management)
41
+ await this.loadSystemPlugins(path.join(promptsDir, 'shared'));
42
+ }
43
+ /**
44
+ * Load a single plugin file
45
+ */
46
+ async loadPlugin(filePath, category) {
47
+ try {
48
+ // Skip .d.ts files (TypeScript declaration files)
49
+ if (filePath.endsWith('.d.ts')) {
50
+ return;
51
+ }
52
+ // Convert Windows path to proper file:// URL
53
+ const fileUrl = `file:///${filePath.replace(/\\/g, '/')}`;
54
+ const module = await import(fileUrl);
55
+ const PluginClass = module.default;
56
+ if (PluginClass && typeof PluginClass === 'function') {
57
+ const plugin = new PluginClass();
58
+ if (plugin instanceof BasePlugin) {
59
+ this.registerPlugin(plugin);
60
+ // Removed console.log to avoid JSON-RPC interference
61
+ }
62
+ }
63
+ }
64
+ catch (error) {
65
+ // Silent error handling to avoid JSON-RPC interference
66
+ // console.error(`Error loading plugin from ${filePath}:`, error);
67
+ }
68
+ }
69
+ /**
70
+ * Load system plugins (cache management, health check)
71
+ */
72
+ async loadSystemPlugins(sharedDir) {
73
+ // Load cache management plugins
74
+ try {
75
+ const cacheManagerPath = path.join(sharedDir, 'cache-manager.js');
76
+ // Convert Windows path to proper file:// URL
77
+ const fileUrl = `file:///${cacheManagerPath.replace(/\\/g, '/')}`;
78
+ const cacheModule = await import(fileUrl);
79
+ if (cacheModule.ClearCachePlugin) {
80
+ this.registerPlugin(new cacheModule.ClearCachePlugin());
81
+ }
82
+ if (cacheModule.CacheStatisticsPlugin) {
83
+ this.registerPlugin(new cacheModule.CacheStatisticsPlugin());
84
+ }
85
+ }
86
+ catch (error) {
87
+ // Silent error handling to avoid JSON-RPC interference
88
+ // console.error('Error loading cache management plugins:', error);
89
+ }
90
+ }
91
+ /**
92
+ * Register a plugin
93
+ */
94
+ registerPlugin(plugin) {
95
+ // Validate plugin has required properties
96
+ if (!plugin.name || !plugin.category || !plugin.execute) {
97
+ throw new Error('Invalid plugin: missing required properties');
98
+ }
99
+ // Register in main map
100
+ this.plugins.set(plugin.name, plugin);
101
+ // Register in category map
102
+ const categoryPlugins = this.categories.get(plugin.category) || [];
103
+ categoryPlugins.push(plugin);
104
+ this.categories.set(plugin.category, categoryPlugins);
105
+ }
106
+ /**
107
+ * Get a plugin by name
108
+ */
109
+ getPlugin(name) {
110
+ return this.plugins.get(name);
111
+ }
112
+ /**
113
+ * Get all plugins
114
+ */
115
+ getPlugins() {
116
+ return Array.from(this.plugins.values());
117
+ }
118
+ /**
119
+ * Get plugins by category
120
+ */
121
+ getPluginsByCategory(category) {
122
+ return this.categories.get(category) || [];
123
+ }
124
+ /**
125
+ * Get plugin names
126
+ */
127
+ getPluginNames() {
128
+ return Array.from(this.plugins.keys());
129
+ }
130
+ /**
131
+ * Execute a plugin by name
132
+ * Modern v4.2: Each plugin handles its own context management with ThreeStagePromptManager
133
+ */
134
+ async executePlugin(name, params, llmClient) {
135
+ const plugin = this.getPlugin(name);
136
+ if (!plugin) {
137
+ throw new Error(`Plugin not found: ${name}`);
138
+ }
139
+ // Apply defaults and validate parameters
140
+ if (plugin instanceof BasePlugin) {
141
+ params = plugin.applyDefaults(params);
142
+ plugin.validateParams(params);
143
+ }
144
+ // Execute plugin - let each plugin handle its own context management
145
+ // Modern plugins use ThreeStagePromptManager internally for intelligent chunking
146
+ return await plugin.execute(params, llmClient);
147
+ }
148
+ }
149
+ export class PluginRegistry {
150
+ static getInstance() {
151
+ if (!this.instance) {
152
+ this.instance = new PluginLoader();
153
+ }
154
+ return this.instance;
155
+ }
156
+ }
157
+ export default {
158
+ PluginLoader,
159
+ PluginRegistry
160
+ };
161
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Plugin types and interfaces
3
+ */
4
+ export { IPromptPlugin, ParameterSchema, ParameterDefinition, PluginContext, AnalysisResult, Finding, Suggestion, Metrics, LLMClient } from '../prompts/shared/types.js';
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACV,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Plugin types and interfaces
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}