@dcyfr/ai 1.0.1 → 1.0.2
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/dist/ai/agents/agent-loader.d.ts +131 -0
- package/dist/ai/agents/agent-loader.d.ts.map +1 -0
- package/dist/ai/agents/agent-loader.js +397 -0
- package/dist/ai/agents/agent-loader.js.map +1 -0
- package/dist/ai/agents/agent-registry.d.ts +120 -0
- package/dist/ai/agents/agent-registry.d.ts.map +1 -0
- package/dist/ai/agents/agent-registry.js +345 -0
- package/dist/ai/agents/agent-registry.js.map +1 -0
- package/dist/ai/agents/agent-router.d.ts +97 -0
- package/dist/ai/agents/agent-router.d.ts.map +1 -0
- package/dist/ai/agents/agent-router.js +375 -0
- package/dist/ai/agents/agent-router.js.map +1 -0
- package/dist/ai/agents/index.d.ts +10 -0
- package/dist/ai/agents/index.d.ts.map +1 -0
- package/dist/ai/agents/index.js +12 -0
- package/dist/ai/agents/index.js.map +1 -0
- package/dist/ai/agents/types.d.ts +264 -0
- package/dist/ai/agents/types.d.ts.map +1 -0
- package/dist/ai/agents/types.js +10 -0
- package/dist/ai/agents/types.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.d.ts +12 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.js +92 -0
- package/dist/ai/agents-builtin/architecture/architecture-reviewer.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.d.ts +12 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.js +103 -0
- package/dist/ai/agents-builtin/architecture/cloud-architect.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/database-architect.d.ts +12 -0
- package/dist/ai/agents-builtin/architecture/database-architect.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/database-architect.js +95 -0
- package/dist/ai/agents-builtin/architecture/database-architect.js.map +1 -0
- package/dist/ai/agents-builtin/architecture/index.d.ts +11 -0
- package/dist/ai/agents-builtin/architecture/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/architecture/index.js +11 -0
- package/dist/ai/agents-builtin/architecture/index.js.map +1 -0
- package/dist/ai/agents-builtin/content/index.d.ts +9 -0
- package/dist/ai/agents-builtin/content/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/content/index.js +9 -0
- package/dist/ai/agents-builtin/content/index.js.map +1 -0
- package/dist/ai/agents-builtin/content/technical-writer.d.ts +12 -0
- package/dist/ai/agents-builtin/content/technical-writer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/content/technical-writer.js +93 -0
- package/dist/ai/agents-builtin/content/technical-writer.js.map +1 -0
- package/dist/ai/agents-builtin/data/data-scientist.d.ts +12 -0
- package/dist/ai/agents-builtin/data/data-scientist.d.ts.map +1 -0
- package/dist/ai/agents-builtin/data/data-scientist.js +92 -0
- package/dist/ai/agents-builtin/data/data-scientist.js.map +1 -0
- package/dist/ai/agents-builtin/data/index.d.ts +9 -0
- package/dist/ai/agents-builtin/data/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/data/index.js +9 -0
- package/dist/ai/agents-builtin/data/index.js.map +1 -0
- package/dist/ai/agents-builtin/development/backend-architect.d.ts +12 -0
- package/dist/ai/agents-builtin/development/backend-architect.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/backend-architect.js +99 -0
- package/dist/ai/agents-builtin/development/backend-architect.js.map +1 -0
- package/dist/ai/agents-builtin/development/frontend-developer.d.ts +12 -0
- package/dist/ai/agents-builtin/development/frontend-developer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/frontend-developer.js +106 -0
- package/dist/ai/agents-builtin/development/frontend-developer.js.map +1 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.d.ts +12 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.js +86 -0
- package/dist/ai/agents-builtin/development/fullstack-developer.js.map +1 -0
- package/dist/ai/agents-builtin/development/index.d.ts +12 -0
- package/dist/ai/agents-builtin/development/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/index.js +12 -0
- package/dist/ai/agents-builtin/development/index.js.map +1 -0
- package/dist/ai/agents-builtin/development/typescript-pro.d.ts +12 -0
- package/dist/ai/agents-builtin/development/typescript-pro.d.ts.map +1 -0
- package/dist/ai/agents-builtin/development/typescript-pro.js +98 -0
- package/dist/ai/agents-builtin/development/typescript-pro.js.map +1 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.d.ts +12 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.js +98 -0
- package/dist/ai/agents-builtin/devops/devops-engineer.js.map +1 -0
- package/dist/ai/agents-builtin/devops/index.d.ts +9 -0
- package/dist/ai/agents-builtin/devops/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/devops/index.js +9 -0
- package/dist/ai/agents-builtin/devops/index.js.map +1 -0
- package/dist/ai/agents-builtin/index.d.ts +36 -0
- package/dist/ai/agents-builtin/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/index.js +107 -0
- package/dist/ai/agents-builtin/index.js.map +1 -0
- package/dist/ai/agents-builtin/performance/index.d.ts +9 -0
- package/dist/ai/agents-builtin/performance/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/performance/index.js +9 -0
- package/dist/ai/agents-builtin/performance/index.js.map +1 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.d.ts +12 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.d.ts.map +1 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.js +89 -0
- package/dist/ai/agents-builtin/performance/performance-profiler.js.map +1 -0
- package/dist/ai/agents-builtin/research/index.d.ts +9 -0
- package/dist/ai/agents-builtin/research/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/research/index.js +9 -0
- package/dist/ai/agents-builtin/research/index.js.map +1 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.d.ts +12 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.d.ts.map +1 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.js +83 -0
- package/dist/ai/agents-builtin/research/research-orchestrator.js.map +1 -0
- package/dist/ai/agents-builtin/security/index.d.ts +9 -0
- package/dist/ai/agents-builtin/security/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/security/index.js +9 -0
- package/dist/ai/agents-builtin/security/index.js.map +1 -0
- package/dist/ai/agents-builtin/security/security-engineer.d.ts +12 -0
- package/dist/ai/agents-builtin/security/security-engineer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/security/security-engineer.js +90 -0
- package/dist/ai/agents-builtin/security/security-engineer.js.map +1 -0
- package/dist/ai/agents-builtin/testing/debugger.d.ts +13 -0
- package/dist/ai/agents-builtin/testing/debugger.d.ts.map +1 -0
- package/dist/ai/agents-builtin/testing/debugger.js +89 -0
- package/dist/ai/agents-builtin/testing/debugger.js.map +1 -0
- package/dist/ai/agents-builtin/testing/index.d.ts +10 -0
- package/dist/ai/agents-builtin/testing/index.d.ts.map +1 -0
- package/dist/ai/agents-builtin/testing/index.js +10 -0
- package/dist/ai/agents-builtin/testing/index.js.map +1 -0
- package/dist/ai/agents-builtin/testing/test-engineer.d.ts +12 -0
- package/dist/ai/agents-builtin/testing/test-engineer.d.ts.map +1 -0
- package/dist/ai/agents-builtin/testing/test-engineer.js +93 -0
- package/dist/ai/agents-builtin/testing/test-engineer.js.map +1 -0
- package/dist/ai/config/loader.d.ts +19 -5
- package/dist/ai/config/loader.d.ts.map +1 -1
- package/dist/ai/config/loader.js +53 -18
- package/dist/ai/config/loader.js.map +1 -1
- package/dist/ai/config/schema.d.ts +600 -8
- package/dist/ai/config/schema.d.ts.map +1 -1
- package/dist/ai/config/schema.js +156 -0
- package/dist/ai/config/schema.js.map +1 -1
- package/dist/ai/index.d.ts +4 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +35 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/index.d.ts +8 -0
- package/dist/ai/mcp/index.d.ts.map +1 -0
- package/dist/ai/mcp/index.js +8 -0
- package/dist/ai/mcp/index.js.map +1 -0
- package/dist/ai/mcp/mcp-registry.d.ts +127 -0
- package/dist/ai/mcp/mcp-registry.d.ts.map +1 -0
- package/dist/ai/mcp/mcp-registry.js +355 -0
- package/dist/ai/mcp/mcp-registry.js.map +1 -0
- package/dist/ai/mcp/types.d.ts +126 -0
- package/dist/ai/mcp/types.d.ts.map +1 -0
- package/dist/ai/mcp/types.js +9 -0
- package/dist/ai/mcp/types.js.map +1 -0
- package/dist/ai/utils/storage.d.ts +6 -1
- package/dist/ai/utils/storage.d.ts.map +1 -1
- package/dist/ai/utils/storage.js +57 -22
- package/dist/ai/utils/storage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Registry - MCP Server Discovery and Management
|
|
3
|
+
*
|
|
4
|
+
* Manages MCP servers across the application with discovery, health monitoring,
|
|
5
|
+
* and tier-based organization.
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/mcp/mcp-registry
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { MCPRegistry } from '@dcyfr/ai/mcp/mcp-registry';
|
|
11
|
+
*
|
|
12
|
+
* const registry = new MCPRegistry({
|
|
13
|
+
* autoDiscover: true,
|
|
14
|
+
* searchPaths: ['.mcp.json', '.vscode/mcp.json'],
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Initialize and discover servers
|
|
18
|
+
* await registry.initialize();
|
|
19
|
+
*
|
|
20
|
+
* // Get available servers
|
|
21
|
+
* const servers = registry.getAvailableServers();
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Default registry configuration
|
|
26
|
+
*/
|
|
27
|
+
const DEFAULT_CONFIG = {
|
|
28
|
+
autoDiscover: false,
|
|
29
|
+
searchPaths: ['.mcp.json', '.vscode/mcp.json'],
|
|
30
|
+
configFileName: '.mcp.json',
|
|
31
|
+
healthCheckInterval: 60000, // 1 minute
|
|
32
|
+
healthMonitoring: false,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* MCP Registry - manages MCP servers
|
|
36
|
+
*/
|
|
37
|
+
export class MCPRegistry {
|
|
38
|
+
servers = new Map();
|
|
39
|
+
config;
|
|
40
|
+
healthCheckTimer = null;
|
|
41
|
+
initialized = false;
|
|
42
|
+
constructor(config = {}) {
|
|
43
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Initialize the registry
|
|
47
|
+
*/
|
|
48
|
+
async initialize() {
|
|
49
|
+
if (this.initialized)
|
|
50
|
+
return;
|
|
51
|
+
if (this.config.autoDiscover && this.config.searchPaths) {
|
|
52
|
+
for (const searchPath of this.config.searchPaths) {
|
|
53
|
+
await this.loadFromFile(searchPath);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (this.config.healthMonitoring) {
|
|
57
|
+
this.startHealthMonitoring();
|
|
58
|
+
}
|
|
59
|
+
this.initialized = true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load MCP servers from a config file
|
|
63
|
+
*/
|
|
64
|
+
async loadFromFile(filePath) {
|
|
65
|
+
try {
|
|
66
|
+
const fs = await import('fs/promises');
|
|
67
|
+
const path = await import('path');
|
|
68
|
+
const absolutePath = path.isAbsolute(filePath)
|
|
69
|
+
? filePath
|
|
70
|
+
: path.resolve(process.cwd(), filePath);
|
|
71
|
+
const content = await fs.readFile(absolutePath, 'utf-8');
|
|
72
|
+
const config = JSON.parse(content);
|
|
73
|
+
// Handle different config formats
|
|
74
|
+
const servers = config.mcpServers || config.servers || config;
|
|
75
|
+
for (const [name, serverConfig] of Object.entries(servers)) {
|
|
76
|
+
if (typeof serverConfig === 'object' && serverConfig !== null) {
|
|
77
|
+
const config = serverConfig;
|
|
78
|
+
await this.registerServer({
|
|
79
|
+
...config,
|
|
80
|
+
name: config.name || name,
|
|
81
|
+
}, absolutePath);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// File doesn't exist or is invalid - skip silently
|
|
87
|
+
if (error.code !== 'ENOENT') {
|
|
88
|
+
console.warn(`⚠️ Failed to load MCP config from ${filePath}:`, error);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Register an MCP server
|
|
94
|
+
*/
|
|
95
|
+
async registerServer(config, source = 'runtime') {
|
|
96
|
+
const server = {
|
|
97
|
+
config: {
|
|
98
|
+
enabled: true,
|
|
99
|
+
tier: 'project',
|
|
100
|
+
...config,
|
|
101
|
+
},
|
|
102
|
+
status: 'available',
|
|
103
|
+
lastChecked: new Date(),
|
|
104
|
+
source,
|
|
105
|
+
};
|
|
106
|
+
this.servers.set(config.name, server);
|
|
107
|
+
// Perform initial health check if monitoring is enabled
|
|
108
|
+
if (this.config.healthMonitoring) {
|
|
109
|
+
await this.checkServerHealth(config.name);
|
|
110
|
+
}
|
|
111
|
+
return server;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Unregister an MCP server
|
|
115
|
+
*/
|
|
116
|
+
unregisterServer(name) {
|
|
117
|
+
return this.servers.delete(name);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get a server by name
|
|
121
|
+
*/
|
|
122
|
+
getServer(name) {
|
|
123
|
+
return this.servers.get(name);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get all registered servers
|
|
127
|
+
*/
|
|
128
|
+
getAllServers() {
|
|
129
|
+
return Array.from(this.servers.values());
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get available (enabled and healthy) servers
|
|
133
|
+
*/
|
|
134
|
+
getAvailableServers() {
|
|
135
|
+
return this.getAllServers().filter((s) => s.config.enabled !== false && s.status === 'available');
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get servers by tier
|
|
139
|
+
*/
|
|
140
|
+
getServersByTier(tier) {
|
|
141
|
+
return this.getAllServers().filter((s) => s.config.tier === tier);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get servers by tag
|
|
145
|
+
*/
|
|
146
|
+
getServersByTag(tag) {
|
|
147
|
+
return this.getAllServers().filter((s) => s.config.tags?.includes(tag));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Enable a server
|
|
151
|
+
*/
|
|
152
|
+
enableServer(name) {
|
|
153
|
+
const server = this.servers.get(name);
|
|
154
|
+
if (!server)
|
|
155
|
+
return false;
|
|
156
|
+
server.config.enabled = true;
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Disable a server
|
|
161
|
+
*/
|
|
162
|
+
disableServer(name) {
|
|
163
|
+
const server = this.servers.get(name);
|
|
164
|
+
if (!server)
|
|
165
|
+
return false;
|
|
166
|
+
server.config.enabled = false;
|
|
167
|
+
server.status = 'disabled';
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check health of a specific server
|
|
172
|
+
*/
|
|
173
|
+
async checkServerHealth(name) {
|
|
174
|
+
const server = this.servers.get(name);
|
|
175
|
+
if (!server) {
|
|
176
|
+
return {
|
|
177
|
+
server: name,
|
|
178
|
+
status: 'unavailable',
|
|
179
|
+
error: 'Server not found',
|
|
180
|
+
timestamp: new Date(),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const startTime = Date.now();
|
|
184
|
+
try {
|
|
185
|
+
// For stdio servers, check if command exists
|
|
186
|
+
if (server.config.transport === 'stdio' && server.config.command) {
|
|
187
|
+
const { execSync } = await import('child_process');
|
|
188
|
+
try {
|
|
189
|
+
execSync(`which ${server.config.command}`, { stdio: 'ignore' });
|
|
190
|
+
server.status = 'available';
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
server.status = 'unavailable';
|
|
194
|
+
server.error = `Command '${server.config.command}' not found`;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// For URL-based servers, attempt a connection check
|
|
198
|
+
else if (server.config.url) {
|
|
199
|
+
try {
|
|
200
|
+
const response = await fetch(server.config.url, {
|
|
201
|
+
method: 'HEAD',
|
|
202
|
+
signal: AbortSignal.timeout(5000),
|
|
203
|
+
});
|
|
204
|
+
server.status = response.ok ? 'available' : 'unavailable';
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
server.status = 'unavailable';
|
|
208
|
+
server.error = `Cannot reach ${server.config.url}`;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
server.lastChecked = new Date();
|
|
212
|
+
return {
|
|
213
|
+
server: name,
|
|
214
|
+
status: server.status,
|
|
215
|
+
responseTime: Date.now() - startTime,
|
|
216
|
+
error: server.error,
|
|
217
|
+
timestamp: server.lastChecked,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
server.status = 'error';
|
|
222
|
+
server.error = error instanceof Error ? error.message : String(error);
|
|
223
|
+
server.lastChecked = new Date();
|
|
224
|
+
return {
|
|
225
|
+
server: name,
|
|
226
|
+
status: 'error',
|
|
227
|
+
error: server.error,
|
|
228
|
+
timestamp: server.lastChecked,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Check health of all servers
|
|
234
|
+
*/
|
|
235
|
+
async checkAllHealth() {
|
|
236
|
+
const results = [];
|
|
237
|
+
for (const [name] of this.servers) {
|
|
238
|
+
const result = await this.checkServerHealth(name);
|
|
239
|
+
results.push(result);
|
|
240
|
+
}
|
|
241
|
+
return results;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Start health monitoring
|
|
245
|
+
*/
|
|
246
|
+
startHealthMonitoring() {
|
|
247
|
+
if (this.healthCheckTimer)
|
|
248
|
+
return;
|
|
249
|
+
this.healthCheckTimer = setInterval(async () => {
|
|
250
|
+
await this.checkAllHealth();
|
|
251
|
+
}, this.config.healthCheckInterval || 60000);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Stop health monitoring
|
|
255
|
+
*/
|
|
256
|
+
stopHealthMonitoring() {
|
|
257
|
+
if (this.healthCheckTimer) {
|
|
258
|
+
clearInterval(this.healthCheckTimer);
|
|
259
|
+
this.healthCheckTimer = null;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get registry statistics
|
|
264
|
+
*/
|
|
265
|
+
getStats() {
|
|
266
|
+
const servers = this.getAllServers();
|
|
267
|
+
const byTier = {};
|
|
268
|
+
const byTransport = {};
|
|
269
|
+
let available = 0;
|
|
270
|
+
let unavailable = 0;
|
|
271
|
+
let disabled = 0;
|
|
272
|
+
let errorCount = 0;
|
|
273
|
+
for (const server of servers) {
|
|
274
|
+
// Count by status
|
|
275
|
+
switch (server.status) {
|
|
276
|
+
case 'available':
|
|
277
|
+
available++;
|
|
278
|
+
break;
|
|
279
|
+
case 'unavailable':
|
|
280
|
+
unavailable++;
|
|
281
|
+
break;
|
|
282
|
+
case 'disabled':
|
|
283
|
+
disabled++;
|
|
284
|
+
break;
|
|
285
|
+
case 'error':
|
|
286
|
+
errorCount++;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
// Count by tier
|
|
290
|
+
const tier = server.config.tier || 'project';
|
|
291
|
+
byTier[tier] = (byTier[tier] || 0) + 1;
|
|
292
|
+
// Count by transport
|
|
293
|
+
const transport = server.config.transport;
|
|
294
|
+
byTransport[transport] = (byTransport[transport] || 0) + 1;
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
totalServers: servers.length,
|
|
298
|
+
available,
|
|
299
|
+
unavailable,
|
|
300
|
+
disabled,
|
|
301
|
+
error: errorCount,
|
|
302
|
+
byTier,
|
|
303
|
+
byTransport,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Export configuration for all servers
|
|
308
|
+
*/
|
|
309
|
+
exportConfig() {
|
|
310
|
+
const config = {};
|
|
311
|
+
for (const [name, server] of this.servers) {
|
|
312
|
+
config[name] = server.config;
|
|
313
|
+
}
|
|
314
|
+
return config;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Clear all servers
|
|
318
|
+
*/
|
|
319
|
+
clearAll() {
|
|
320
|
+
this.stopHealthMonitoring();
|
|
321
|
+
this.servers.clear();
|
|
322
|
+
this.initialized = false;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Shutdown the registry
|
|
326
|
+
*/
|
|
327
|
+
async shutdown() {
|
|
328
|
+
this.stopHealthMonitoring();
|
|
329
|
+
this.servers.clear();
|
|
330
|
+
this.initialized = false;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Global MCP registry instance
|
|
335
|
+
*/
|
|
336
|
+
let globalRegistry = null;
|
|
337
|
+
/**
|
|
338
|
+
* Get or create global MCP registry
|
|
339
|
+
*/
|
|
340
|
+
export function getGlobalMCPRegistry(config) {
|
|
341
|
+
if (!globalRegistry) {
|
|
342
|
+
globalRegistry = new MCPRegistry(config);
|
|
343
|
+
}
|
|
344
|
+
return globalRegistry;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Reset global MCP registry
|
|
348
|
+
*/
|
|
349
|
+
export function resetGlobalMCPRegistry() {
|
|
350
|
+
if (globalRegistry) {
|
|
351
|
+
globalRegistry.shutdown();
|
|
352
|
+
}
|
|
353
|
+
globalRegistry = null;
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=mcp-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../../../packages/ai/mcp/mcp-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines interfaces for MCP server registration, discovery, and management.
|
|
5
|
+
*
|
|
6
|
+
* @module @dcyfr/ai/mcp/types
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* MCP server transport type
|
|
10
|
+
*/
|
|
11
|
+
export type MCPTransport = 'stdio' | 'sse' | 'websocket';
|
|
12
|
+
/**
|
|
13
|
+
* MCP server status
|
|
14
|
+
*/
|
|
15
|
+
export type MCPServerStatus = 'available' | 'unavailable' | 'error' | 'disabled';
|
|
16
|
+
/**
|
|
17
|
+
* MCP tool definition
|
|
18
|
+
*/
|
|
19
|
+
export interface MCPTool {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
inputSchema?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* MCP resource definition
|
|
26
|
+
*/
|
|
27
|
+
export interface MCPResource {
|
|
28
|
+
uri: string;
|
|
29
|
+
name: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
mimeType?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* MCP server configuration
|
|
35
|
+
*/
|
|
36
|
+
export interface MCPServerConfig {
|
|
37
|
+
/** Server identifier */
|
|
38
|
+
name: string;
|
|
39
|
+
/** Human-readable description */
|
|
40
|
+
description?: string;
|
|
41
|
+
/** Transport type */
|
|
42
|
+
transport: MCPTransport;
|
|
43
|
+
/** Command to start the server (for stdio transport) */
|
|
44
|
+
command?: string;
|
|
45
|
+
/** Command arguments */
|
|
46
|
+
args?: string[];
|
|
47
|
+
/** Environment variables */
|
|
48
|
+
env?: Record<string, string>;
|
|
49
|
+
/** URL for SSE/WebSocket transports */
|
|
50
|
+
url?: string;
|
|
51
|
+
/** Whether the server is enabled */
|
|
52
|
+
enabled?: boolean;
|
|
53
|
+
/** Tier (public, private, project) */
|
|
54
|
+
tier?: 'public' | 'private' | 'project';
|
|
55
|
+
/** Tags for filtering */
|
|
56
|
+
tags?: string[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* MCP server manifest (runtime info)
|
|
60
|
+
*/
|
|
61
|
+
export interface MCPServerManifest {
|
|
62
|
+
/** Server name */
|
|
63
|
+
name: string;
|
|
64
|
+
/** Server version */
|
|
65
|
+
version: string;
|
|
66
|
+
/** Protocol version */
|
|
67
|
+
protocolVersion: string;
|
|
68
|
+
/** Server capabilities */
|
|
69
|
+
capabilities: MCPServerCapabilities;
|
|
70
|
+
/** Available tools */
|
|
71
|
+
tools?: MCPTool[];
|
|
72
|
+
/** Available resources */
|
|
73
|
+
resources?: MCPResource[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* MCP server capabilities
|
|
77
|
+
*/
|
|
78
|
+
export interface MCPServerCapabilities {
|
|
79
|
+
tools?: boolean;
|
|
80
|
+
resources?: boolean;
|
|
81
|
+
prompts?: boolean;
|
|
82
|
+
logging?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Loaded MCP server instance
|
|
86
|
+
*/
|
|
87
|
+
export interface LoadedMCPServer {
|
|
88
|
+
/** Server configuration */
|
|
89
|
+
config: MCPServerConfig;
|
|
90
|
+
/** Server manifest (populated after connection) */
|
|
91
|
+
manifest?: MCPServerManifest;
|
|
92
|
+
/** Current status */
|
|
93
|
+
status: MCPServerStatus;
|
|
94
|
+
/** Last status check */
|
|
95
|
+
lastChecked: Date;
|
|
96
|
+
/** Error message if status is 'error' */
|
|
97
|
+
error?: string;
|
|
98
|
+
/** Source (file path or package) */
|
|
99
|
+
source: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* MCP registry configuration
|
|
103
|
+
*/
|
|
104
|
+
export interface MCPRegistryConfig {
|
|
105
|
+
/** Enable auto-discovery */
|
|
106
|
+
autoDiscover?: boolean;
|
|
107
|
+
/** Paths to search for MCP configs */
|
|
108
|
+
searchPaths?: string[];
|
|
109
|
+
/** Default config file name */
|
|
110
|
+
configFileName?: string;
|
|
111
|
+
/** Health check interval (ms) */
|
|
112
|
+
healthCheckInterval?: number;
|
|
113
|
+
/** Enable health monitoring */
|
|
114
|
+
healthMonitoring?: boolean;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* MCP health check result
|
|
118
|
+
*/
|
|
119
|
+
export interface MCPHealthCheckResult {
|
|
120
|
+
server: string;
|
|
121
|
+
status: MCPServerStatus;
|
|
122
|
+
responseTime?: number;
|
|
123
|
+
error?: string;
|
|
124
|
+
timestamp: Date;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../packages/ai/mcp/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../packages/ai/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { StorageAdapter, StorageType } from '../types';
|
|
6
6
|
/**
|
|
7
|
-
* In-memory storage adapter (default,
|
|
7
|
+
* In-memory storage adapter (default, works in both browser and Node.js)
|
|
8
8
|
*/
|
|
9
9
|
export declare class MemoryStorageAdapter implements StorageAdapter {
|
|
10
10
|
type: StorageType;
|
|
@@ -17,6 +17,8 @@ export declare class MemoryStorageAdapter implements StorageAdapter {
|
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* File-based storage adapter (Node.js only)
|
|
20
|
+
*
|
|
21
|
+
* This adapter requires Node.js and will throw an error if used in a browser environment.
|
|
20
22
|
*/
|
|
21
23
|
export declare class FileStorageAdapter implements StorageAdapter {
|
|
22
24
|
type: StorageType;
|
|
@@ -30,6 +32,9 @@ export declare class FileStorageAdapter implements StorageAdapter {
|
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Storage adapter factory
|
|
35
|
+
*
|
|
36
|
+
* In browser environments, only 'memory' storage is available.
|
|
37
|
+
* File-based storage requires a Node.js environment.
|
|
33
38
|
*/
|
|
34
39
|
export declare function createStorageAdapter(type: StorageType, options?: {
|
|
35
40
|
basePath?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../packages/ai/utils/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../packages/ai/utils/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,IAAI,EAAE,WAAW,CAAY;IAC7B,OAAO,CAAC,KAAK,CAAmC;IAE1C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,IAAI,EAAE,WAAW,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAUtB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoBtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB7B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAsBvG"}
|