@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.
- package/CHANGELOG.md +273 -0
- package/LICENSE +21 -0
- package/README.md +203 -0
- package/dist/cache/analysis-cache.d.ts +33 -0
- package/dist/cache/analysis-cache.d.ts.map +1 -0
- package/dist/cache/analysis-cache.js +56 -0
- package/dist/cache/analysis-cache.js.map +1 -0
- package/dist/cache/cache-manager.d.ts +29 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +85 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cache/index.d.ts +16 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +17 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/prompt-cache.d.ts +33 -0
- package/dist/cache/prompt-cache.d.ts.map +1 -0
- package/dist/cache/prompt-cache.js +61 -0
- package/dist/cache/prompt-cache.js.map +1 -0
- package/dist/config.d.ts +43 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +70 -0
- package/dist/config.js.map +1 -0
- package/dist/core/ThreeStagePromptManager.d.ts +39 -0
- package/dist/core/ThreeStagePromptManager.d.ts.map +1 -0
- package/dist/core/ThreeStagePromptManager.js +176 -0
- package/dist/core/ThreeStagePromptManager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +230 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/base-plugin.d.ts +47 -0
- package/dist/plugins/base-plugin.d.ts.map +1 -0
- package/dist/plugins/base-plugin.js +90 -0
- package/dist/plugins/base-plugin.js.map +1 -0
- package/dist/plugins/index.d.ts +58 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +161 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +5 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +5 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/prompts/analyze/code-quality.d.ts +116 -0
- package/dist/prompts/analyze/code-quality.d.ts.map +1 -0
- package/dist/prompts/analyze/code-quality.js +433 -0
- package/dist/prompts/analyze/code-quality.js.map +1 -0
- package/dist/prompts/analyze/compare-integration.d.ts +130 -0
- package/dist/prompts/analyze/compare-integration.d.ts.map +1 -0
- package/dist/prompts/analyze/compare-integration.js +543 -0
- package/dist/prompts/analyze/compare-integration.js.map +1 -0
- package/dist/prompts/analyze/count-files.d.ts +109 -0
- package/dist/prompts/analyze/count-files.d.ts.map +1 -0
- package/dist/prompts/analyze/count-files.js +399 -0
- package/dist/prompts/analyze/count-files.js.map +1 -0
- package/dist/prompts/analyze/database-queries.d.ts +156 -0
- package/dist/prompts/analyze/database-queries.d.ts.map +1 -0
- package/dist/prompts/analyze/database-queries.js +759 -0
- package/dist/prompts/analyze/database-queries.js.map +1 -0
- package/dist/prompts/analyze/dependencies.d.ts +97 -0
- package/dist/prompts/analyze/dependencies.d.ts.map +1 -0
- package/dist/prompts/analyze/dependencies.js +333 -0
- package/dist/prompts/analyze/dependencies.js.map +1 -0
- package/dist/prompts/analyze/diff-signatures.d.ts +139 -0
- package/dist/prompts/analyze/diff-signatures.d.ts.map +1 -0
- package/dist/prompts/analyze/diff-signatures.js +702 -0
- package/dist/prompts/analyze/diff-signatures.js.map +1 -0
- package/dist/prompts/analyze/find-patterns.d.ts +128 -0
- package/dist/prompts/analyze/find-patterns.d.ts.map +1 -0
- package/dist/prompts/analyze/find-patterns.js +520 -0
- package/dist/prompts/analyze/find-patterns.js.map +1 -0
- package/dist/prompts/analyze/find-unused-css.d.ts +151 -0
- package/dist/prompts/analyze/find-unused-css.d.ts.map +1 -0
- package/dist/prompts/analyze/find-unused-css.js +754 -0
- package/dist/prompts/analyze/find-unused-css.js.map +1 -0
- package/dist/prompts/analyze/n8n-workflow.d.ts +137 -0
- package/dist/prompts/analyze/n8n-workflow.d.ts.map +1 -0
- package/dist/prompts/analyze/n8n-workflow.js +529 -0
- package/dist/prompts/analyze/n8n-workflow.js.map +1 -0
- package/dist/prompts/analyze/project-structure.d.ts +126 -0
- package/dist/prompts/analyze/project-structure.d.ts.map +1 -0
- package/dist/prompts/analyze/project-structure.js +569 -0
- package/dist/prompts/analyze/project-structure.js.map +1 -0
- package/dist/prompts/analyze/security-audit.d.ts +142 -0
- package/dist/prompts/analyze/security-audit.d.ts.map +1 -0
- package/dist/prompts/analyze/security-audit.js +637 -0
- package/dist/prompts/analyze/security-audit.js.map +1 -0
- package/dist/prompts/analyze/single-file.d.ts +162 -0
- package/dist/prompts/analyze/single-file.d.ts.map +1 -0
- package/dist/prompts/analyze/single-file.js +665 -0
- package/dist/prompts/analyze/single-file.js.map +1 -0
- package/dist/prompts/analyze/trace-execution.d.ts +126 -0
- package/dist/prompts/analyze/trace-execution.d.ts.map +1 -0
- package/dist/prompts/analyze/trace-execution.js +609 -0
- package/dist/prompts/analyze/trace-execution.js.map +1 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +116 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +1 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.js +454 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.js.map +1 -0
- package/dist/prompts/analyze/wordpress-security.d.ts +146 -0
- package/dist/prompts/analyze/wordpress-security.d.ts.map +1 -0
- package/dist/prompts/analyze/wordpress-security.js +698 -0
- package/dist/prompts/analyze/wordpress-security.js.map +1 -0
- package/dist/prompts/analyze/wordpress-theme-audit.d.ts +114 -0
- package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +1 -0
- package/dist/prompts/analyze/wordpress-theme-audit.js +538 -0
- package/dist/prompts/analyze/wordpress-theme-audit.js.map +1 -0
- package/dist/prompts/custom/custom-prompt.d.ts +135 -0
- package/dist/prompts/custom/custom-prompt.d.ts.map +1 -0
- package/dist/prompts/custom/custom-prompt.js +419 -0
- package/dist/prompts/custom/custom-prompt.js.map +1 -0
- package/dist/prompts/fun/arcade-game.d.ts +152 -0
- package/dist/prompts/fun/arcade-game.d.ts.map +1 -0
- package/dist/prompts/fun/arcade-game.js +653 -0
- package/dist/prompts/fun/arcade-game.js.map +1 -0
- package/dist/prompts/fun/create_text_adventure.d.ts +100 -0
- package/dist/prompts/fun/create_text_adventure.d.ts.map +1 -0
- package/dist/prompts/fun/create_text_adventure.js +397 -0
- package/dist/prompts/fun/create_text_adventure.js.map +1 -0
- package/dist/prompts/fun/css-art-generator.d.ts +168 -0
- package/dist/prompts/fun/css-art-generator.d.ts.map +1 -0
- package/dist/prompts/fun/css-art-generator.js +827 -0
- package/dist/prompts/fun/css-art-generator.js.map +1 -0
- package/dist/prompts/generate/project-documentation.d.ts +137 -0
- package/dist/prompts/generate/project-documentation.d.ts.map +1 -0
- package/dist/prompts/generate/project-documentation.js +666 -0
- package/dist/prompts/generate/project-documentation.js.map +1 -0
- package/dist/prompts/generate/refactoring.d.ts +164 -0
- package/dist/prompts/generate/refactoring.d.ts.map +1 -0
- package/dist/prompts/generate/refactoring.js +621 -0
- package/dist/prompts/generate/refactoring.js.map +1 -0
- package/dist/prompts/generate/responsive-component.d.ts +147 -0
- package/dist/prompts/generate/responsive-component.d.ts.map +1 -0
- package/dist/prompts/generate/responsive-component.js +955 -0
- package/dist/prompts/generate/responsive-component.js.map +1 -0
- package/dist/prompts/generate/typescript-conversion.d.ts +144 -0
- package/dist/prompts/generate/typescript-conversion.d.ts.map +1 -0
- package/dist/prompts/generate/typescript-conversion.js +527 -0
- package/dist/prompts/generate/typescript-conversion.js.map +1 -0
- package/dist/prompts/generate/unit-tests.d.ts +139 -0
- package/dist/prompts/generate/unit-tests.d.ts.map +1 -0
- package/dist/prompts/generate/unit-tests.js +578 -0
- package/dist/prompts/generate/unit-tests.js.map +1 -0
- package/dist/prompts/generate/wordpress-plugin.d.ts +179 -0
- package/dist/prompts/generate/wordpress-plugin.d.ts.map +1 -0
- package/dist/prompts/generate/wordpress-plugin.js +763 -0
- package/dist/prompts/generate/wordpress-plugin.js.map +1 -0
- package/dist/prompts/generate/wordpress-theme-from-static.d.ts +177 -0
- package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +1 -0
- package/dist/prompts/generate/wordpress-theme-from-static.js +695 -0
- package/dist/prompts/generate/wordpress-theme-from-static.js.map +1 -0
- package/dist/prompts/shared/cache-manager.d.ts +45 -0
- package/dist/prompts/shared/cache-manager.d.ts.map +1 -0
- package/dist/prompts/shared/cache-manager.js +129 -0
- package/dist/prompts/shared/cache-manager.js.map +1 -0
- package/dist/prompts/shared/helpers.d.ts +39 -0
- package/dist/prompts/shared/helpers.d.ts.map +1 -0
- package/dist/prompts/shared/helpers.js +151 -0
- package/dist/prompts/shared/helpers.js.map +1 -0
- package/dist/prompts/shared/templates.d.ts +35 -0
- package/dist/prompts/shared/templates.d.ts.map +1 -0
- package/dist/prompts/shared/templates.js +77 -0
- package/dist/prompts/shared/templates.js.map +1 -0
- package/dist/prompts/shared/types.d.ts +112 -0
- package/dist/prompts/shared/types.d.ts.map +1 -0
- package/dist/prompts/shared/types.js +5 -0
- package/dist/prompts/shared/types.js.map +1 -0
- package/dist/prompts/system/find-unused-files.d.ts +106 -0
- package/dist/prompts/system/find-unused-files.d.ts.map +1 -0
- package/dist/prompts/system/find-unused-files.js +353 -0
- package/dist/prompts/system/find-unused-files.js.map +1 -0
- package/dist/security/index.d.ts +39 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +46 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/integration-helpers.d.ts +121 -0
- package/dist/security/integration-helpers.d.ts.map +1 -0
- package/dist/security/integration-helpers.js +190 -0
- package/dist/security/integration-helpers.js.map +1 -0
- package/dist/security/output-encoder.d.ts +94 -0
- package/dist/security/output-encoder.d.ts.map +1 -0
- package/dist/security/output-encoder.js +295 -0
- package/dist/security/output-encoder.js.map +1 -0
- package/dist/security/prompt-injection-guard.d.ts +59 -0
- package/dist/security/prompt-injection-guard.d.ts.map +1 -0
- package/dist/security/prompt-injection-guard.js +249 -0
- package/dist/security/prompt-injection-guard.js.map +1 -0
- package/dist/security/sanitisation.d.ts +67 -0
- package/dist/security/sanitisation.d.ts.map +1 -0
- package/dist/security/sanitisation.js +398 -0
- package/dist/security/sanitisation.js.map +1 -0
- package/dist/security/security-service.d.ts +103 -0
- package/dist/security/security-service.d.ts.map +1 -0
- package/dist/security/security-service.js +303 -0
- package/dist/security/security-service.js.map +1 -0
- package/dist/security-config.d.ts +45 -0
- package/dist/security-config.d.ts.map +1 -0
- package/dist/security-config.js +63 -0
- package/dist/security-config.js.map +1 -0
- package/dist/system/function-list.d.ts +61 -0
- package/dist/system/function-list.d.ts.map +1 -0
- package/dist/system/function-list.js +111 -0
- package/dist/system/function-list.js.map +1 -0
- package/dist/system/function-registry.d.ts +23 -0
- package/dist/system/function-registry.d.ts.map +1 -0
- package/dist/system/function-registry.js +136 -0
- package/dist/system/function-registry.js.map +1 -0
- package/dist/system/health-check.d.ts +33 -0
- package/dist/system/health-check.d.ts.map +1 -0
- package/dist/system/health-check.js +98 -0
- package/dist/system/health-check.js.map +1 -0
- package/dist/system/path-resolver.d.ts +55 -0
- package/dist/system/path-resolver.d.ts.map +1 -0
- package/dist/system/path-resolver.js +90 -0
- package/dist/system/path-resolver.js.map +1 -0
- package/dist/templates/plugin-template.d.ts +121 -0
- package/dist/templates/plugin-template.d.ts.map +1 -0
- package/dist/templates/plugin-template.js +450 -0
- package/dist/templates/plugin-template.js.map +1 -0
- package/dist/types/chunking-types.d.ts +88 -0
- package/dist/types/chunking-types.d.ts.map +1 -0
- package/dist/types/chunking-types.js +18 -0
- package/dist/types/chunking-types.js.map +1 -0
- package/dist/types/prompt-stages.d.ts +42 -0
- package/dist/types/prompt-stages.d.ts.map +1 -0
- package/dist/types/prompt-stages.js +6 -0
- package/dist/types/prompt-stages.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/css-parser.d.ts +26 -0
- package/dist/utils/css-parser.d.ts.map +1 -0
- package/dist/utils/css-parser.js +117 -0
- package/dist/utils/css-parser.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +13 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +78 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/plugin-utilities.d.ts +171 -0
- package/dist/utils/plugin-utilities.d.ts.map +1 -0
- package/dist/utils/plugin-utilities.js +221 -0
- package/dist/utils/plugin-utilities.js.map +1 -0
- package/dist/utils/streamHandler.d.ts +3 -0
- package/dist/utils/streamHandler.d.ts.map +1 -0
- package/dist/utils/streamHandler.js +137 -0
- package/dist/utils/streamHandler.js.map +1 -0
- package/dist/validation/output-validator.d.ts +136 -0
- package/dist/validation/output-validator.d.ts.map +1 -0
- package/dist/validation/output-validator.js +262 -0
- package/dist/validation/output-validator.js.map +1 -0
- package/dist/validation/response-factory.d.ts +44 -0
- package/dist/validation/response-factory.d.ts.map +1 -0
- package/dist/validation/response-factory.js +202 -0
- package/dist/validation/response-factory.js.map +1 -0
- package/dist/validation/schemas.d.ts +519 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +6 -0
- package/dist/validation/schemas.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|