@defai.digital/ax-cli 3.7.2 → 3.8.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/README.md +148 -53
- package/dist/agent/context-manager.d.ts +15 -1
- package/dist/agent/context-manager.js +50 -19
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/dependency-resolver.js +13 -7
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +37 -0
- package/dist/agent/llm-agent.js +318 -98
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/status-reporter.d.ts +114 -0
- package/dist/agent/status-reporter.js +335 -0
- package/dist/agent/status-reporter.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.d.ts +2 -0
- package/dist/analyzers/git/churn-calculator.js +42 -8
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/analyzers/git/hotspot-detector.js +2 -2
- package/dist/analyzers/git/hotspot-detector.js.map +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
- package/dist/analyzers/security/security-analyzer.js +1 -1
- package/dist/analyzers/security/security-analyzer.js.map +1 -1
- package/dist/checkpoint/manager.d.ts +1 -0
- package/dist/checkpoint/manager.js +49 -9
- package/dist/checkpoint/manager.js.map +1 -1
- package/dist/checkpoint/storage.js +2 -2
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/mcp-migrate.d.ts +9 -0
- package/dist/commands/mcp-migrate.js +172 -0
- package/dist/commands/mcp-migrate.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +211 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/vscode.d.ts +7 -0
- package/dist/commands/vscode.js +363 -0
- package/dist/commands/vscode.js.map +1 -0
- package/dist/index.js +79 -30
- package/dist/index.js.map +1 -1
- package/dist/llm/client.js +33 -4
- package/dist/llm/client.js.map +1 -1
- package/dist/mcp/automatosx-loader.d.ts +84 -0
- package/dist/mcp/automatosx-loader.js +238 -0
- package/dist/mcp/automatosx-loader.js.map +1 -0
- package/dist/mcp/client-mutex-patch.d.ts +36 -0
- package/dist/mcp/client-mutex-patch.js +75 -0
- package/dist/mcp/client-mutex-patch.js.map +1 -0
- package/dist/mcp/client-v2.d.ts +229 -0
- package/dist/mcp/client-v2.js +740 -0
- package/dist/mcp/client-v2.js.map +1 -0
- package/dist/mcp/client.d.ts +111 -13
- package/dist/mcp/client.js +168 -253
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config-detector-v2.d.ts +83 -0
- package/dist/mcp/config-detector-v2.js +328 -0
- package/dist/mcp/config-detector-v2.js.map +1 -0
- package/dist/mcp/config-detector.d.ts +90 -0
- package/dist/mcp/config-detector.js +242 -0
- package/dist/mcp/config-detector.js.map +1 -0
- package/dist/mcp/config-migrator-v2.d.ts +89 -0
- package/dist/mcp/config-migrator-v2.js +288 -0
- package/dist/mcp/config-migrator-v2.js.map +1 -0
- package/dist/mcp/config-migrator.d.ts +63 -0
- package/dist/mcp/config-migrator.js +269 -0
- package/dist/mcp/config-migrator.js.map +1 -0
- package/dist/mcp/config-v2.d.ts +106 -0
- package/dist/mcp/config-v2.js +417 -0
- package/dist/mcp/config-v2.js.map +1 -0
- package/dist/mcp/config.d.ts +12 -1
- package/dist/mcp/config.js +95 -10
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/error-formatter.d.ts +46 -0
- package/dist/mcp/error-formatter.js +244 -0
- package/dist/mcp/error-formatter.js.map +1 -0
- package/dist/mcp/health.d.ts +5 -0
- package/dist/mcp/health.js +22 -2
- package/dist/mcp/health.js.map +1 -1
- package/dist/mcp/invariants.d.ts +141 -0
- package/dist/mcp/invariants.js +243 -0
- package/dist/mcp/invariants.js.map +1 -0
- package/dist/mcp/mutex-safe.d.ts +153 -0
- package/dist/mcp/mutex-safe.js +260 -0
- package/dist/mcp/mutex-safe.js.map +1 -0
- package/dist/mcp/mutex.d.ts +73 -0
- package/dist/mcp/mutex.js +137 -0
- package/dist/mcp/mutex.js.map +1 -0
- package/dist/mcp/reconnection.d.ts +4 -0
- package/dist/mcp/reconnection.js +25 -1
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/transports-v2.d.ts +152 -0
- package/dist/mcp/transports-v2.js +481 -0
- package/dist/mcp/transports-v2.js.map +1 -0
- package/dist/mcp/type-safety.d.ts +231 -0
- package/dist/mcp/type-safety.js +273 -0
- package/dist/mcp/type-safety.js.map +1 -0
- package/dist/planner/task-planner.js +13 -0
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/planner/types.d.ts +6 -6
- package/dist/schemas/confirmation-schemas.d.ts +2 -2
- package/dist/schemas/settings-schemas.d.ts +196 -0
- package/dist/schemas/settings-schemas.js +146 -5
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/sdk/index.d.ts +118 -2
- package/dist/sdk/index.js +146 -4
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +182 -0
- package/dist/sdk/testing.js +231 -0
- package/dist/sdk/testing.js.map +1 -1
- package/dist/sdk/version.d.ts +114 -15
- package/dist/sdk/version.js +137 -15
- package/dist/sdk/version.js.map +1 -1
- package/dist/tools/bash.js +54 -9
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/registry.d.ts +146 -0
- package/dist/tools/registry.js +170 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.js +12 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +84 -26
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/ui/components/chat-history.js +6 -1
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-input.d.ts +2 -1
- package/dist/ui/components/chat-input.js +5 -2
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +187 -5
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/context-breakdown.d.ts +23 -0
- package/dist/ui/components/context-breakdown.js +124 -0
- package/dist/ui/components/context-breakdown.js.map +1 -0
- package/dist/ui/components/keyboard-help.d.ts +17 -0
- package/dist/ui/components/keyboard-help.js +116 -0
- package/dist/ui/components/keyboard-help.js.map +1 -0
- package/dist/ui/components/keyboard-hints.js +2 -2
- package/dist/ui/components/keyboard-hints.js.map +1 -1
- package/dist/ui/components/quick-actions.js +43 -7
- package/dist/ui/components/quick-actions.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +3 -0
- package/dist/ui/components/status-bar.js +25 -16
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/components/toast-notification.d.ts +42 -0
- package/dist/ui/components/toast-notification.js +30 -2
- package/dist/ui/components/toast-notification.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +34 -4
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/components/welcome-panel.js +2 -2
- package/dist/ui/components/welcome-panel.js.map +1 -1
- package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
- package/dist/ui/hooks/use-enhanced-input.js +901 -90
- package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.d.ts +11 -1
- package/dist/ui/hooks/use-input-handler.js +67 -3
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.d.ts +1 -1
- package/dist/ui/hooks/use-input-history.js +50 -14
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
- package/dist/ui/utils/bracketed-paste-handler.js +322 -0
- package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
- package/dist/ui/utils/change-summarizer.js +16 -6
- package/dist/ui/utils/change-summarizer.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +10 -1
- package/dist/ui/utils/tool-grouper.js +143 -30
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/auto-accept-logger.d.ts +173 -0
- package/dist/utils/auto-accept-logger.js +420 -0
- package/dist/utils/auto-accept-logger.js.map +1 -0
- package/dist/utils/background-task-manager.d.ts +11 -0
- package/dist/utils/background-task-manager.js +124 -38
- package/dist/utils/background-task-manager.js.map +1 -1
- package/dist/utils/confirmation-service.d.ts +1 -0
- package/dist/utils/confirmation-service.js +6 -1
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/encryption.d.ts +8 -0
- package/dist/utils/encryption.js +44 -27
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/enhanced-error-messages.d.ts +33 -0
- package/dist/utils/enhanced-error-messages.js +420 -0
- package/dist/utils/enhanced-error-messages.js.map +1 -0
- package/dist/utils/error-handler.d.ts +13 -3
- package/dist/utils/error-handler.js +16 -4
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/external-editor.d.ts +47 -0
- package/dist/utils/external-editor.js +179 -0
- package/dist/utils/external-editor.js.map +1 -0
- package/dist/utils/history-migration.d.ts +9 -0
- package/dist/utils/history-migration.js +36 -0
- package/dist/utils/history-migration.js.map +1 -0
- package/dist/utils/paste-utils.js +12 -11
- package/dist/utils/paste-utils.js.map +1 -1
- package/dist/utils/rate-limiter.js +20 -1
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/safety-rules.d.ts +64 -0
- package/dist/utils/safety-rules.js +225 -0
- package/dist/utils/safety-rules.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +89 -1
- package/dist/utils/settings-manager.js +359 -3
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/token-counter.d.ts +2 -0
- package/dist/utils/token-counter.js +32 -9
- package/dist/utils/token-counter.js.map +1 -1
- package/dist/utils/version.d.ts +11 -2
- package/dist/utils/version.js +54 -21
- package/dist/utils/version.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-Friendly MCP Error Formatter
|
|
3
|
+
*
|
|
4
|
+
* Transforms cryptic Zod validation errors and technical errors into
|
|
5
|
+
* actionable, user-friendly messages with helpful hints and documentation links.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
/**
|
|
9
|
+
* Format a Zod validation error for MCP server config
|
|
10
|
+
*/
|
|
11
|
+
export function formatMCPConfigError(serverName, error, originalConfig) {
|
|
12
|
+
const lines = [];
|
|
13
|
+
lines.push(chalk.red('╭─ MCP Configuration Error ─────────────────────╮'));
|
|
14
|
+
lines.push(chalk.red(`│ Server: ${chalk.bold(serverName)}`));
|
|
15
|
+
lines.push(chalk.red('│'));
|
|
16
|
+
// Group errors by field
|
|
17
|
+
const errorsByField = new Map();
|
|
18
|
+
for (const issue of error.issues) {
|
|
19
|
+
const field = issue.path.length > 0 ? issue.path.join('.') : 'config';
|
|
20
|
+
const message = issue.message;
|
|
21
|
+
if (!errorsByField.has(field)) {
|
|
22
|
+
errorsByField.set(field, []);
|
|
23
|
+
}
|
|
24
|
+
errorsByField.get(field).push(message);
|
|
25
|
+
}
|
|
26
|
+
// Display errors
|
|
27
|
+
lines.push(chalk.red('│ Errors:'));
|
|
28
|
+
for (const [field, messages] of errorsByField.entries()) {
|
|
29
|
+
lines.push(chalk.red(`│ ❌ Field "${chalk.yellow(field)}":`));
|
|
30
|
+
messages.forEach(msg => {
|
|
31
|
+
lines.push(chalk.red(`│ ${msg}`));
|
|
32
|
+
});
|
|
33
|
+
// Add helpful hints based on field
|
|
34
|
+
const hints = getHintsForField(field, originalConfig);
|
|
35
|
+
if (hints.length > 0) {
|
|
36
|
+
lines.push(chalk.red(`│ ${chalk.cyan('Hint:')} ${hints[0]}`));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
lines.push(chalk.red('│'));
|
|
40
|
+
// Add example
|
|
41
|
+
const example = getExampleConfig(errorsByField, originalConfig);
|
|
42
|
+
if (example) {
|
|
43
|
+
lines.push(chalk.red('│ Example correct config:'));
|
|
44
|
+
example.split('\n').forEach(line => {
|
|
45
|
+
lines.push(chalk.red(`│ ${chalk.green(line)}`));
|
|
46
|
+
});
|
|
47
|
+
lines.push(chalk.red('│'));
|
|
48
|
+
}
|
|
49
|
+
// Add documentation link
|
|
50
|
+
lines.push(chalk.red(`│ ${chalk.blue('📖 Documentation:')} https://docs.ax-cli.dev/mcp/configuration`));
|
|
51
|
+
lines.push(chalk.red('╰────────────────────────────────────────────────╯'));
|
|
52
|
+
return lines.join('\n');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get helpful hints based on error field
|
|
56
|
+
*/
|
|
57
|
+
function getHintsForField(field, originalConfig) {
|
|
58
|
+
const hints = [];
|
|
59
|
+
switch (field) {
|
|
60
|
+
case 'transport':
|
|
61
|
+
hints.push('Add "transport": { "type": "stdio", "command": "...", "args": [...] }');
|
|
62
|
+
if (originalConfig?.command) {
|
|
63
|
+
hints.push('Legacy format detected. Your "command" field should be inside "transport".');
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
case 'transport.type':
|
|
67
|
+
hints.push('Valid types: "stdio", "http", "sse", "streamable_http"');
|
|
68
|
+
break;
|
|
69
|
+
case 'transport.command':
|
|
70
|
+
hints.push('Command is required for stdio transport');
|
|
71
|
+
hints.push('Example: "npx", "node", "python", etc.');
|
|
72
|
+
break;
|
|
73
|
+
case 'transport.url':
|
|
74
|
+
hints.push('URL is required for http/sse transports');
|
|
75
|
+
hints.push('Example: "https://api.example.com" or "http://localhost:3000"');
|
|
76
|
+
break;
|
|
77
|
+
case 'transport.args':
|
|
78
|
+
hints.push('Args should be an array of strings');
|
|
79
|
+
hints.push('Example: ["@modelcontextprotocol/server-github"]');
|
|
80
|
+
break;
|
|
81
|
+
case 'name':
|
|
82
|
+
hints.push('Server name is required and should be alphanumeric with hyphens/underscores');
|
|
83
|
+
hints.push('Example: "github", "my-server", "api_v2"');
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
if (field.startsWith('transport.')) {
|
|
87
|
+
hints.push(`Check the ${field.split('.')[1]} field in your transport configuration`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return hints;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Generate example config based on errors
|
|
94
|
+
*/
|
|
95
|
+
function getExampleConfig(errorsByField, originalConfig) {
|
|
96
|
+
const hasTransportError = Array.from(errorsByField.keys()).some(f => f === 'transport' || f.startsWith('transport.'));
|
|
97
|
+
if (!hasTransportError) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
// Check if it's likely a stdio config
|
|
101
|
+
const isStdio = originalConfig?.command || errorsByField.has('transport.command');
|
|
102
|
+
if (isStdio) {
|
|
103
|
+
return `{
|
|
104
|
+
"name": "my-server",
|
|
105
|
+
"transport": {
|
|
106
|
+
"type": "stdio",
|
|
107
|
+
"command": "npx",
|
|
108
|
+
"args": ["@modelcontextprotocol/server-example"],
|
|
109
|
+
"env": { "API_KEY": "..." }
|
|
110
|
+
}
|
|
111
|
+
}`;
|
|
112
|
+
}
|
|
113
|
+
// Default to HTTP example
|
|
114
|
+
return `{
|
|
115
|
+
"name": "my-server",
|
|
116
|
+
"transport": {
|
|
117
|
+
"type": "http",
|
|
118
|
+
"url": "https://api.example.com",
|
|
119
|
+
"headers": { "Authorization": "Bearer ..." }
|
|
120
|
+
}
|
|
121
|
+
}`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Format a connection error
|
|
125
|
+
*/
|
|
126
|
+
export function formatConnectionError(serverName, error, transportType) {
|
|
127
|
+
const lines = [];
|
|
128
|
+
lines.push(chalk.red('╭─ MCP Connection Error ────────────────────────╮'));
|
|
129
|
+
lines.push(chalk.red(`│ Server: ${chalk.bold(serverName)}`));
|
|
130
|
+
if (transportType) {
|
|
131
|
+
lines.push(chalk.red(`│ Transport: ${transportType}`));
|
|
132
|
+
}
|
|
133
|
+
lines.push(chalk.red('│'));
|
|
134
|
+
lines.push(chalk.red(`│ Error: ${error.message}`));
|
|
135
|
+
lines.push(chalk.red('│'));
|
|
136
|
+
// Add hints based on error message
|
|
137
|
+
const hints = getConnectionErrorHints(error, transportType);
|
|
138
|
+
if (hints.length > 0) {
|
|
139
|
+
lines.push(chalk.red('│ Troubleshooting:'));
|
|
140
|
+
hints.forEach(hint => {
|
|
141
|
+
lines.push(chalk.red(`│ • ${hint}`));
|
|
142
|
+
});
|
|
143
|
+
lines.push(chalk.red('│'));
|
|
144
|
+
}
|
|
145
|
+
lines.push(chalk.red(`│ ${chalk.blue('🔧 Diagnostics:')} ax-cli mcp test ${serverName}`));
|
|
146
|
+
lines.push(chalk.red('╰────────────────────────────────────────────────╯'));
|
|
147
|
+
return lines.join('\n');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get hints for connection errors
|
|
151
|
+
*/
|
|
152
|
+
function getConnectionErrorHints(error, transportType) {
|
|
153
|
+
const hints = [];
|
|
154
|
+
const message = error.message.toLowerCase();
|
|
155
|
+
if (message.includes('command not found') || message.includes('enoent')) {
|
|
156
|
+
hints.push('Command not found. Check if the command is installed and in PATH.');
|
|
157
|
+
hints.push('Try running the command manually to verify it works.');
|
|
158
|
+
}
|
|
159
|
+
else if (message.includes('timeout') || message.includes('timed out')) {
|
|
160
|
+
hints.push('Connection timed out. Check if the server is running.');
|
|
161
|
+
hints.push('Verify the URL/command is correct and accessible.');
|
|
162
|
+
}
|
|
163
|
+
else if (message.includes('econnrefused') || message.includes('connection refused')) {
|
|
164
|
+
hints.push('Connection refused. Server may not be running.');
|
|
165
|
+
hints.push('Check if the server is listening on the correct port.');
|
|
166
|
+
}
|
|
167
|
+
else if (message.includes('unauthorized') || message.includes('401')) {
|
|
168
|
+
hints.push('Authentication failed. Check your API keys/tokens.');
|
|
169
|
+
hints.push('Verify credentials in environment variables or config.');
|
|
170
|
+
}
|
|
171
|
+
else if (message.includes('not found') || message.includes('404')) {
|
|
172
|
+
hints.push('Endpoint not found. Check the URL path.');
|
|
173
|
+
hints.push('Verify the server supports MCP protocol.');
|
|
174
|
+
}
|
|
175
|
+
else if (message.includes('permission denied') || message.includes('eacces')) {
|
|
176
|
+
hints.push('Permission denied. Check file/command permissions.');
|
|
177
|
+
hints.push('You may need to run with sudo or adjust permissions.');
|
|
178
|
+
}
|
|
179
|
+
// Transport-specific hints
|
|
180
|
+
if (transportType === 'stdio' && hints.length === 0) {
|
|
181
|
+
hints.push('Check if the command is installed: which <command>');
|
|
182
|
+
hints.push('Verify the args are correct for your command.');
|
|
183
|
+
}
|
|
184
|
+
else if ((transportType === 'http' || transportType === 'sse') && hints.length === 0) {
|
|
185
|
+
hints.push('Verify the server is running: curl <url>');
|
|
186
|
+
hints.push('Check if the URL is accessible from your network.');
|
|
187
|
+
}
|
|
188
|
+
return hints;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Format a validation error (generic)
|
|
192
|
+
*/
|
|
193
|
+
export function formatValidationError(context, issues) {
|
|
194
|
+
const lines = [];
|
|
195
|
+
lines.push(chalk.yellow('╭─ Validation Error ────────────────────────────╮'));
|
|
196
|
+
lines.push(chalk.yellow(`│ Context: ${context}`));
|
|
197
|
+
lines.push(chalk.yellow('│'));
|
|
198
|
+
lines.push(chalk.yellow('│ Issues:'));
|
|
199
|
+
issues.forEach(({ field, message }) => {
|
|
200
|
+
lines.push(chalk.yellow(`│ ❌ ${field}: ${message}`));
|
|
201
|
+
});
|
|
202
|
+
lines.push(chalk.yellow('╰────────────────────────────────────────────────╯'));
|
|
203
|
+
return lines.join('\n');
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Format a warning message
|
|
207
|
+
*/
|
|
208
|
+
export function formatWarning(message, details) {
|
|
209
|
+
const lines = [];
|
|
210
|
+
lines.push(chalk.yellow(`⚠️ ${message}`));
|
|
211
|
+
if (details && details.length > 0) {
|
|
212
|
+
details.forEach(detail => {
|
|
213
|
+
lines.push(chalk.dim(` ${detail}`));
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
return lines.join('\n');
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Format a success message
|
|
220
|
+
*/
|
|
221
|
+
export function formatSuccess(message, details) {
|
|
222
|
+
const lines = [];
|
|
223
|
+
lines.push(chalk.green(`✅ ${message}`));
|
|
224
|
+
if (details && details.length > 0) {
|
|
225
|
+
details.forEach(detail => {
|
|
226
|
+
lines.push(chalk.dim(` ${detail}`));
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return lines.join('\n');
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Format info message
|
|
233
|
+
*/
|
|
234
|
+
export function formatInfo(message, details) {
|
|
235
|
+
const lines = [];
|
|
236
|
+
lines.push(chalk.blue(`ℹ️ ${message}`));
|
|
237
|
+
if (details && details.length > 0) {
|
|
238
|
+
details.forEach(detail => {
|
|
239
|
+
lines.push(chalk.dim(` ${detail}`));
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return lines.join('\n');
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=error-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-formatter.js","sourceRoot":"","sources":["../../src/mcp/error-formatter.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/health.d.ts
CHANGED
|
@@ -66,6 +66,10 @@ export declare class MCPHealthMonitor extends EventEmitter {
|
|
|
66
66
|
* Stop health monitoring
|
|
67
67
|
*/
|
|
68
68
|
stop(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Clean up all resources (interval, reconnection manager, event listeners)
|
|
71
|
+
*/
|
|
72
|
+
dispose(): void;
|
|
69
73
|
/**
|
|
70
74
|
* Perform health checks on all servers
|
|
71
75
|
*/
|
|
@@ -95,6 +99,7 @@ export declare class MCPHealthMonitor extends EventEmitter {
|
|
|
95
99
|
getReconnectionManager(): ReconnectionManager;
|
|
96
100
|
/**
|
|
97
101
|
* Calculate percentile from array of values
|
|
102
|
+
* Returns undefined for empty arrays to distinguish from actual 0 values
|
|
98
103
|
*/
|
|
99
104
|
private calculatePercentile;
|
|
100
105
|
/**
|
package/dist/mcp/health.js
CHANGED
|
@@ -61,6 +61,19 @@ export class MCPHealthMonitor extends EventEmitter {
|
|
|
61
61
|
this.healthCheckInterval = null;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Clean up all resources (interval, reconnection manager, event listeners)
|
|
66
|
+
*/
|
|
67
|
+
dispose() {
|
|
68
|
+
// Stop health monitoring
|
|
69
|
+
this.stop();
|
|
70
|
+
// Dispose reconnection manager (clears timers and state)
|
|
71
|
+
this.reconnectionManager.dispose();
|
|
72
|
+
// Clear server stats
|
|
73
|
+
this.serverStats.clear();
|
|
74
|
+
// Remove all event listeners
|
|
75
|
+
this.removeAllListeners();
|
|
76
|
+
}
|
|
64
77
|
/**
|
|
65
78
|
* Perform health checks on all servers
|
|
66
79
|
*/
|
|
@@ -194,11 +207,18 @@ export class MCPHealthMonitor extends EventEmitter {
|
|
|
194
207
|
}
|
|
195
208
|
/**
|
|
196
209
|
* Calculate percentile from array of values
|
|
210
|
+
* Returns undefined for empty arrays to distinguish from actual 0 values
|
|
197
211
|
*/
|
|
198
212
|
calculatePercentile(values, percentile) {
|
|
213
|
+
// EDGE CASE FIX: Handle empty array explicitly
|
|
214
|
+
if (values.length === 0) {
|
|
215
|
+
return 0; // Return 0 for empty metrics (no data available)
|
|
216
|
+
}
|
|
199
217
|
const sorted = [...values].sort((a, b) => a - b);
|
|
200
|
-
|
|
201
|
-
|
|
218
|
+
// EDGE CASE FIX: Ensure index is never negative
|
|
219
|
+
const index = Math.max(0, Math.ceil(sorted.length * percentile) - 1);
|
|
220
|
+
// EDGE CASE FIX: Remove || 0 fallback to preserve actual 0 values
|
|
221
|
+
return sorted[index];
|
|
202
222
|
}
|
|
203
223
|
/**
|
|
204
224
|
* Get health report for all servers
|
package/dist/mcp/health.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/mcp/health.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/mcp/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Invariant Validation
|
|
3
|
+
*
|
|
4
|
+
* This file provides runtime checks for logical invariants that TypeScript
|
|
5
|
+
* cannot verify at compile-time. These catch the "30% logic bugs" that
|
|
6
|
+
* slip through type checking.
|
|
7
|
+
*
|
|
8
|
+
* Philosophy: Fail Fast & Loud
|
|
9
|
+
* - Detect bugs immediately when invariant is violated
|
|
10
|
+
* - Throw descriptive errors with context
|
|
11
|
+
* - Better to crash than silently corrupt data
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Invariant check - throws if condition is false
|
|
15
|
+
*
|
|
16
|
+
* Use this for conditions that MUST be true for correctness
|
|
17
|
+
*/
|
|
18
|
+
export declare function invariant(condition: boolean, message: string, context?: Record<string, any>): asserts condition;
|
|
19
|
+
/**
|
|
20
|
+
* Custom error for invariant violations
|
|
21
|
+
*/
|
|
22
|
+
export declare class InvariantViolationError extends Error {
|
|
23
|
+
constructor(message: string);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Assert array is non-empty
|
|
27
|
+
*/
|
|
28
|
+
export declare function assertNonEmpty<T>(array: T[], message?: string): asserts array is [T, ...T[]];
|
|
29
|
+
/**
|
|
30
|
+
* Assert value is defined (not null or undefined)
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertDefined<T>(value: T | null | undefined, message?: string): asserts value is T;
|
|
33
|
+
/**
|
|
34
|
+
* Assert number is positive
|
|
35
|
+
*/
|
|
36
|
+
export declare function assertPositive(value: number, message?: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Assert number is non-negative
|
|
39
|
+
*/
|
|
40
|
+
export declare function assertNonNegative(value: number, message?: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Assert string is non-empty
|
|
43
|
+
*/
|
|
44
|
+
export declare function assertNonEmptyString(value: string, message?: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Assert value is within range
|
|
47
|
+
*/
|
|
48
|
+
export declare function assertInRange(value: number, min: number, max: number, message?: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Assert map has key
|
|
51
|
+
*/
|
|
52
|
+
export declare function assertHasKey<K, V>(map: Map<K, V>, key: K, message?: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Assert object has property
|
|
55
|
+
*/
|
|
56
|
+
export declare function assertHasProperty<T extends object, K extends string>(obj: T, key: K, message?: string): asserts obj is T & Record<K, any>;
|
|
57
|
+
/**
|
|
58
|
+
* MCP-SPECIFIC INVARIANTS
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* Assert connection state is valid
|
|
62
|
+
*/
|
|
63
|
+
export declare function assertValidConnectionState(state: string, validStates: readonly string[]): void;
|
|
64
|
+
/**
|
|
65
|
+
* Assert server name is valid format
|
|
66
|
+
*/
|
|
67
|
+
export declare function assertValidServerName(name: string): void;
|
|
68
|
+
/**
|
|
69
|
+
* Assert migration result is successful
|
|
70
|
+
*/
|
|
71
|
+
export declare function assertMigrationSuccess<T>(result: {
|
|
72
|
+
success: boolean;
|
|
73
|
+
value?: T;
|
|
74
|
+
error?: any;
|
|
75
|
+
}, context?: string): asserts result is {
|
|
76
|
+
success: true;
|
|
77
|
+
value: T;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Assert no duplicate server names
|
|
81
|
+
*/
|
|
82
|
+
export declare function assertNoDuplicates(servers: Array<{
|
|
83
|
+
name: string;
|
|
84
|
+
}>, message?: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Assert mutex is locked
|
|
87
|
+
*/
|
|
88
|
+
export declare function assertMutexLocked(isLocked: boolean, key: string, message?: string): void;
|
|
89
|
+
/**
|
|
90
|
+
* Assert mutex is unlocked
|
|
91
|
+
*/
|
|
92
|
+
export declare function assertMutexUnlocked(isLocked: boolean, key: string, message?: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* Assert resource is not disposed
|
|
95
|
+
*/
|
|
96
|
+
export declare function assertNotDisposed(disposed: boolean, resourceName: string, message?: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* Assert exactly one of multiple conditions is true
|
|
99
|
+
*/
|
|
100
|
+
export declare function assertExactlyOne(conditions: boolean[], labels: string[], message?: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* Assert at least one condition is true
|
|
103
|
+
*/
|
|
104
|
+
export declare function assertAtLeastOne(conditions: boolean[], labels: string[], message?: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Assert config is in expected format
|
|
107
|
+
*/
|
|
108
|
+
export declare function assertConfigFormat(config: any, expectedFormat: 'legacy' | 'modern', serverName: string): void;
|
|
109
|
+
/**
|
|
110
|
+
* Assert config has required fields
|
|
111
|
+
*/
|
|
112
|
+
export declare function assertConfigHasFields(config: any, requiredFields: string[], serverName: string): void;
|
|
113
|
+
/**
|
|
114
|
+
* USAGE PATTERNS
|
|
115
|
+
*/
|
|
116
|
+
/**
|
|
117
|
+
* Pattern 1: Guard functions
|
|
118
|
+
*/
|
|
119
|
+
export declare function guardedConnect(serverName: string, config: any): void;
|
|
120
|
+
/**
|
|
121
|
+
* Pattern 2: State validation
|
|
122
|
+
*/
|
|
123
|
+
export declare function validateConnectionState(state: string, expectedStates: string[]): void;
|
|
124
|
+
/**
|
|
125
|
+
* Pattern 3: Pre/Post conditions
|
|
126
|
+
*/
|
|
127
|
+
export declare function criticalOperation(value: number): number;
|
|
128
|
+
/**
|
|
129
|
+
* Pattern 4: Loop invariants
|
|
130
|
+
*/
|
|
131
|
+
export declare function processServers(servers: Array<{
|
|
132
|
+
name: string;
|
|
133
|
+
}>): void;
|
|
134
|
+
/**
|
|
135
|
+
* Pattern 5: Resource management
|
|
136
|
+
*/
|
|
137
|
+
export declare class Resource {
|
|
138
|
+
private disposed;
|
|
139
|
+
use(): void;
|
|
140
|
+
dispose(): void;
|
|
141
|
+
}
|