@specverse/engines 4.3.4 → 5.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 (66) hide show
  1. package/assets/examples/10-api/README.md +3 -3
  2. package/assets/prompts/core/README.md +1 -1
  3. package/dist/inference/core/rule-engine.d.ts +0 -12
  4. package/dist/inference/core/rule-engine.d.ts.map +1 -1
  5. package/dist/inference/core/rule-engine.js +99 -968
  6. package/dist/inference/core/rule-engine.js.map +1 -1
  7. package/dist/inference/core/template-helpers.d.ts +56 -0
  8. package/dist/inference/core/template-helpers.d.ts.map +1 -0
  9. package/dist/inference/core/template-helpers.js +87 -0
  10. package/dist/inference/core/template-helpers.js.map +1 -0
  11. package/dist/inference/logical/generators/service-generator.d.ts.map +1 -1
  12. package/dist/inference/logical/generators/service-generator.js +0 -4
  13. package/dist/inference/logical/generators/service-generator.js.map +1 -1
  14. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +27 -5
  15. package/dist/libs/instance-factories/scaffolding/templates/generic/package-json-generator.js +1 -1
  16. package/dist/libs/instance-factories/tools/README.md +1 -1
  17. package/dist/libs/instance-factories/tools/mcp.yaml +1 -1
  18. package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +336 -116
  19. package/dist/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.js +172 -8
  20. package/dist/libs/instance-factories/tools/vscode.yaml +1 -1
  21. package/libs/instance-factories/cli/templates/commander/command-generator.ts +27 -5
  22. package/libs/instance-factories/scaffolding/templates/generic/package-json-generator.ts +10 -6
  23. package/libs/instance-factories/tools/README.md +1 -1
  24. package/libs/instance-factories/tools/mcp.yaml +1 -1
  25. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +386 -141
  26. package/libs/instance-factories/tools/templates/vscode/static/extension.ts +9 -2
  27. package/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.ts +246 -10
  28. package/libs/instance-factories/tools/vscode.yaml +1 -1
  29. package/package.json +5 -4
  30. package/libs/instance-factories/tools/templates/mcp/static/docs/DEPLOYMENT_GUIDE.md +0 -630
  31. package/libs/instance-factories/tools/templates/mcp/static/docs/HYBRID_RESOURCE_SYSTEM.md +0 -330
  32. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/EXTENSION_DEPLOYMENT.md +0 -552
  33. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/LOCAL_DEPLOYMENT.md +0 -164
  34. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/WEB_DEPLOYMENT.md +0 -247
  35. package/libs/instance-factories/tools/templates/mcp/static/package.json +0 -94
  36. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-enterprise.js +0 -284
  37. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-extension.js +0 -139
  38. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-local.js +0 -74
  39. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-web.js +0 -156
  40. package/libs/instance-factories/tools/templates/mcp/static/scripts/copy-canonical-files.js +0 -41
  41. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-deployments.js +0 -259
  42. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-resources.js +0 -231
  43. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-simple.js +0 -196
  44. package/libs/instance-factories/tools/templates/mcp/static/src/controllers/MCPServerController.ts +0 -293
  45. package/libs/instance-factories/tools/templates/mcp/static/src/events/EventEmitter.ts +0 -90
  46. package/libs/instance-factories/tools/templates/mcp/static/src/index.ts +0 -24
  47. package/libs/instance-factories/tools/templates/mcp/static/src/interfaces/ResourceProvider.ts +0 -15
  48. package/libs/instance-factories/tools/templates/mcp/static/src/models/LibrarySuggestion.ts +0 -106
  49. package/libs/instance-factories/tools/templates/mcp/static/src/models/SpecVerseResource.ts +0 -75
  50. package/libs/instance-factories/tools/templates/mcp/static/src/server/mcp-server.ts +0 -239
  51. package/libs/instance-factories/tools/templates/mcp/static/src/services/CLIProxyService.ts +0 -1501
  52. package/libs/instance-factories/tools/templates/mcp/static/src/services/EmbeddedResourcesAdapter.ts +0 -211
  53. package/libs/instance-factories/tools/templates/mcp/static/src/services/EntityModuleService.ts +0 -308
  54. package/libs/instance-factories/tools/templates/mcp/static/src/services/HybridResourcesProvider.ts +0 -210
  55. package/libs/instance-factories/tools/templates/mcp/static/src/services/LibraryToolsService.ts +0 -356
  56. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorBridge.ts +0 -522
  57. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorToolsService.ts +0 -530
  58. package/libs/instance-factories/tools/templates/mcp/static/src/services/PromptToolsService.ts +0 -594
  59. package/libs/instance-factories/tools/templates/mcp/static/src/services/ResourcesProviderService.ts +0 -170
  60. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.init.test.ts +0 -544
  61. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.test.ts +0 -189
  62. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/ResourcesProviderService.test.ts +0 -89
  63. package/libs/instance-factories/tools/templates/mcp/static/src/types/index.ts +0 -110
  64. package/libs/instance-factories/tools/templates/mcp/static/tsconfig.json +0 -28
  65. package/libs/instance-factories/tools/templates/vscode/static/schemas/specverse-v3-schema.json +0 -4279
  66. /package/libs/instance-factories/tools/templates/vscode/static/themes/{specverse-complete-theme.json → specverse-dark-theme.json} +0 -0
@@ -1,239 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * SpecVerse AI Support MCP Server - Clean Implementation
4
- *
5
- * Generated from extracted specifications using MCP materialization prompt
6
- */
7
-
8
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
- import { MCPServerController } from '../controllers/MCPServerController.js';
10
- import type { MCPServerConfig, MCPServerMode } from '../types/index.js';
11
-
12
- export class SpecVerseCleanMCPServer {
13
- private controller: MCPServerController;
14
- private config: MCPServerConfig;
15
-
16
- constructor(config: MCPServerConfig) {
17
- this.config = config;
18
- this.controller = new MCPServerController(config);
19
- this.setupEventHandlers();
20
- }
21
-
22
- private setupEventHandlers(): void {
23
- const eventEmitter = this.controller.getEventEmitter();
24
-
25
- // Log server events if logging is enabled (but not in local/stdio mode)
26
- if (this.config.logging && this.config.mode !== 'local') {
27
- eventEmitter.on('server-started', (event) => {
28
- const serverEvent = event as import('../types/index.js').ServerStartedEvent;
29
- console.error(`Clean MCP Server started in ${serverEvent.mode} mode (PID: ${serverEvent.pid})`);
30
- if (serverEvent.port) {
31
- console.error(`Server listening on port ${serverEvent.port}`);
32
- }
33
- });
34
-
35
- eventEmitter.on('tool-called', (event) => {
36
- const toolEvent = event as import('../types/index.js').ToolCalledEvent;
37
- console.error(`Tool executed: ${toolEvent.toolName} (${toolEvent.executionTime}ms)`);
38
- });
39
-
40
- eventEmitter.on('resource-requested', (event) => {
41
- const resourceEvent = event as import('../types/index.js').ResourceRequestedEvent;
42
- console.error(`Resource accessed: ${resourceEvent.uri}`);
43
- });
44
-
45
- eventEmitter.on('error-occurred', (event) => {
46
- const errorEvent = event as import('../types/index.js').ErrorOccurredEvent;
47
- console.error(`Error in ${errorEvent.operation}: ${errorEvent.error}`);
48
- if (errorEvent.context) {
49
- console.error('Context:', JSON.stringify(errorEvent.context, null, 2));
50
- }
51
- });
52
- }
53
- }
54
-
55
- async start(): Promise<void> {
56
- // Initialize the controller first
57
- await this.controller.initialize();
58
-
59
- if (this.config.mode === 'local') {
60
- // Local mode: use stdio transport
61
- const transport = new StdioServerTransport(process.stdin, process.stdout);
62
-
63
- try {
64
- await this.controller.getServer().connect(transport);
65
- } catch (error) {
66
- console.error('MCP Server connection failed:', error);
67
- process.exit(1);
68
- }
69
-
70
- // Handle graceful shutdown
71
- const gracefulShutdown = () => {
72
- process.exit(0);
73
- };
74
-
75
- process.on('SIGINT', gracefulShutdown);
76
- process.on('SIGTERM', gracefulShutdown);
77
-
78
- // Keep process alive for stdio transport
79
- process.stdin.resume();
80
-
81
- } else if (this.config.mode === 'remote') {
82
- // Remote mode: simple HTTP server for web deployments
83
- if (this.config.logging) {
84
- console.error('Starting Clean MCP Server in remote mode...');
85
- }
86
-
87
- // Create a simple health check endpoint for testing
88
- const { createServer } = await import('http');
89
- const server = createServer(async (req, res) => {
90
- if (req.url === '/health') {
91
- const metrics = this.controller.getMetrics();
92
- res.writeHead(200, { 'Content-Type': 'application/json' });
93
- res.end(JSON.stringify({
94
- status: 'healthy',
95
- mode: 'remote',
96
- metrics
97
- }));
98
- } else if (req.url === '/mcp/resources') {
99
- // List all available resources
100
- try {
101
- const resources = await this.controller.listResources();
102
- res.writeHead(200, { 'Content-Type': 'application/json' });
103
- res.end(JSON.stringify({
104
- resources,
105
- count: resources.length,
106
- mode: 'remote'
107
- }));
108
- } catch (error) {
109
- res.writeHead(500, { 'Content-Type': 'application/json' });
110
- res.end(JSON.stringify({
111
- error: error instanceof Error ? error.message : String(error)
112
- }));
113
- }
114
- } else if (req.url?.startsWith('/mcp/resource/')) {
115
- // Read specific resource by URI (encoded in path)
116
- try {
117
- const uri = decodeURIComponent(req.url.replace('/mcp/resource/', ''));
118
- const resource = await this.controller.readResource(uri);
119
- res.writeHead(200, { 'Content-Type': 'application/json' });
120
- res.end(JSON.stringify(resource));
121
- } catch (error) {
122
- res.writeHead(500, { 'Content-Type': 'application/json' });
123
- res.end(JSON.stringify({
124
- error: error instanceof Error ? error.message : String(error)
125
- }));
126
- }
127
- } else if (req.url === '/mcp') {
128
- // Future: Full MCP over HTTP would go here
129
- res.writeHead(200, { 'Content-Type': 'application/json' });
130
- res.end(JSON.stringify({
131
- message: 'MCP over HTTP partially implemented',
132
- mode: 'remote',
133
- endpoints: [
134
- '/mcp/resources - List all resources',
135
- '/mcp/resource/{uri} - Read specific resource'
136
- ]
137
- }));
138
- } else {
139
- res.writeHead(404);
140
- res.end('Not found');
141
- }
142
- });
143
-
144
- const port = this.config.port || 3000;
145
- server.listen(port, () => {
146
- if (this.config.logging) {
147
- console.error(`Clean MCP Server listening on port ${port}`);
148
- console.error('Health check: http://localhost:' + port + '/health');
149
- }
150
- });
151
-
152
- // Handle graceful shutdown
153
- const gracefulShutdown = () => {
154
- if (this.config.logging) {
155
- console.error('Clean MCP Server shutting down...');
156
- }
157
- server.close(() => {
158
- process.exit(0);
159
- });
160
- };
161
-
162
- process.on('SIGINT', gracefulShutdown);
163
- process.on('SIGTERM', gracefulShutdown);
164
-
165
- } else {
166
- throw new Error(`Unsupported mode: ${this.config.mode}`);
167
- }
168
- }
169
-
170
- getController(): MCPServerController {
171
- return this.controller;
172
- }
173
- }
174
-
175
- // CLI entry point
176
- async function main(): Promise<void> {
177
- // Global error handlers
178
- process.on('uncaughtException', (error) => {
179
- console.error('Uncaught exception in Clean MCP server:', error);
180
- process.exit(1);
181
- });
182
-
183
- process.on('unhandledRejection', (reason, promise) => {
184
- console.error('Unhandled rejection in Clean MCP server:', reason);
185
- process.exit(1);
186
- });
187
-
188
- // Parse command line arguments
189
- const args = process.argv.slice(2);
190
- const mode = (args.includes('--mode')
191
- ? args[args.indexOf('--mode') + 1]
192
- : 'local') as MCPServerMode;
193
-
194
- const port = args.includes('--port')
195
- ? parseInt(args[args.indexOf('--port') + 1])
196
- : 3000;
197
-
198
- const config: MCPServerConfig = {
199
- mode,
200
- port,
201
- logging: !args.includes('--silent'),
202
- resources_path: args.includes('--resources-path')
203
- ? args[args.indexOf('--resources-path') + 1]
204
- : undefined,
205
- features: {
206
- orchestrator: args.includes('--enable-orchestrator')
207
- }
208
- };
209
-
210
- // Suppress all logging in local mode (stdio MCP protocol)
211
- if (config.logging && config.mode !== 'local') {
212
- console.error('Starting Clean SpecVerse MCP Server with config:', JSON.stringify(config, null, 2));
213
- }
214
-
215
- try {
216
- const server = new SpecVerseCleanMCPServer(config);
217
- await server.start();
218
- } catch (error) {
219
- console.error('Failed to start Clean MCP Server:', error);
220
- process.exit(1);
221
- }
222
- }
223
-
224
- // Execute main if this file is run directly or as a binary
225
- const condition1 = import.meta.url === `file://${process.argv[1]}`;
226
- const condition2 = process.argv[1]?.includes('mcp-server.js');
227
- const condition3 = process.argv[0]?.includes('specverse-mcp');
228
- const condition4 = process.argv[1]?.includes('specverse-mcp'); // npm wrapper detection
229
- const isMainModule = condition1 || condition2 || condition3 || condition4;
230
-
231
-
232
- if (isMainModule) {
233
- main().catch((error) => {
234
- console.error('Fatal error in Clean MCP Server:', error);
235
- process.exit(1);
236
- });
237
- }
238
-
239
- export { main };