@defai.digital/ax-cli 3.7.1 → 3.8.1
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 +143 -56
- 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 +35 -0
- package/dist/agent/llm-agent.js +137 -4
- 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 +1 -0
- package/dist/analyzers/git/churn-calculator.js +25 -6
- 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 +22 -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 +130 -0
- package/dist/mcp/mutex.js.map +1 -0
- package/dist/mcp/reconnection.d.ts +4 -0
- package/dist/mcp/reconnection.js +15 -0
- 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 +486 -41
- 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 +7 -0
- 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 +17 -4
- 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,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Configuration Migrator
|
|
3
|
+
*
|
|
4
|
+
* Automatically migrates legacy MCP configurations to modern format.
|
|
5
|
+
* Handles both AutomatosX and old ax-cli configs.
|
|
6
|
+
*/
|
|
7
|
+
import type { MCPServerConfig } from '../schemas/settings-schemas.js';
|
|
8
|
+
export interface MigrationResult {
|
|
9
|
+
/** Whether migration was successful */
|
|
10
|
+
success: boolean;
|
|
11
|
+
/** Migrated configuration (if successful) */
|
|
12
|
+
migratedConfig?: MCPServerConfig;
|
|
13
|
+
/** Original configuration */
|
|
14
|
+
originalConfig: any;
|
|
15
|
+
/** Changes made during migration */
|
|
16
|
+
changes: string[];
|
|
17
|
+
/** Errors encountered */
|
|
18
|
+
errors: string[];
|
|
19
|
+
/** Warnings */
|
|
20
|
+
warnings: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface BatchMigrationResult {
|
|
23
|
+
/** Total configs processed */
|
|
24
|
+
total: number;
|
|
25
|
+
/** Successfully migrated */
|
|
26
|
+
migrated: number;
|
|
27
|
+
/** Already in modern format (no migration needed) */
|
|
28
|
+
alreadyModern: number;
|
|
29
|
+
/** Failed migrations */
|
|
30
|
+
failed: number;
|
|
31
|
+
/** Individual results */
|
|
32
|
+
results: Map<string, MigrationResult>;
|
|
33
|
+
/** Summary message */
|
|
34
|
+
summary: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Migrate a legacy stdio-only config to modern format
|
|
38
|
+
*/
|
|
39
|
+
export declare function migrateLegacyStdioConfig(config: any): MigrationResult;
|
|
40
|
+
/**
|
|
41
|
+
* Attempt to migrate any config (auto-detects format)
|
|
42
|
+
*/
|
|
43
|
+
export declare function migrateConfig(config: any): MigrationResult;
|
|
44
|
+
/**
|
|
45
|
+
* Batch migrate multiple configs
|
|
46
|
+
*/
|
|
47
|
+
export declare function batchMigrateConfigs(configs: Record<string, any>): BatchMigrationResult;
|
|
48
|
+
/**
|
|
49
|
+
* Create backup of config before migration
|
|
50
|
+
*/
|
|
51
|
+
export declare function createConfigBackup(config: any): {
|
|
52
|
+
success: boolean;
|
|
53
|
+
backup?: any;
|
|
54
|
+
error?: string;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Format migration result for display
|
|
58
|
+
*/
|
|
59
|
+
export declare function formatMigrationResult(serverName: string, result: MigrationResult): string;
|
|
60
|
+
/**
|
|
61
|
+
* Format batch migration result for display
|
|
62
|
+
*/
|
|
63
|
+
export declare function formatBatchMigrationResult(result: BatchMigrationResult): string;
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Configuration Migrator
|
|
3
|
+
*
|
|
4
|
+
* Automatically migrates legacy MCP configurations to modern format.
|
|
5
|
+
* Handles both AutomatosX and old ax-cli configs.
|
|
6
|
+
*/
|
|
7
|
+
import { MCPServerConfigSchema } from '../schemas/settings-schemas.js';
|
|
8
|
+
import { isLegacyStdioFormat, detectConfigFormat } from './config-detector.js';
|
|
9
|
+
/**
|
|
10
|
+
* Migrate a legacy stdio-only config to modern format
|
|
11
|
+
*/
|
|
12
|
+
export function migrateLegacyStdioConfig(config) {
|
|
13
|
+
const changes = [];
|
|
14
|
+
const errors = [];
|
|
15
|
+
const warnings = [];
|
|
16
|
+
// Validate this is actually a legacy config
|
|
17
|
+
if (!isLegacyStdioFormat(config)) {
|
|
18
|
+
return {
|
|
19
|
+
success: false,
|
|
20
|
+
originalConfig: config,
|
|
21
|
+
changes,
|
|
22
|
+
errors: ['Config is not in legacy stdio format'],
|
|
23
|
+
warnings
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Build modern config
|
|
27
|
+
try {
|
|
28
|
+
const transportConfig = {
|
|
29
|
+
type: 'stdio',
|
|
30
|
+
command: config.command,
|
|
31
|
+
args: config.args || []
|
|
32
|
+
};
|
|
33
|
+
// Only add env if it exists (cleaner than undefined)
|
|
34
|
+
if (config.env) {
|
|
35
|
+
transportConfig.env = config.env;
|
|
36
|
+
}
|
|
37
|
+
const modernConfig = {
|
|
38
|
+
name: config.name,
|
|
39
|
+
transport: transportConfig
|
|
40
|
+
};
|
|
41
|
+
// Validate the migrated config
|
|
42
|
+
const validationResult = MCPServerConfigSchema.safeParse(modernConfig);
|
|
43
|
+
if (!validationResult.success) {
|
|
44
|
+
errors.push('Migrated config failed validation');
|
|
45
|
+
validationResult.error.issues.forEach(issue => {
|
|
46
|
+
errors.push(` - ${issue.path.join('.')}: ${issue.message}`);
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
originalConfig: config,
|
|
51
|
+
changes,
|
|
52
|
+
errors,
|
|
53
|
+
warnings
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Track changes
|
|
57
|
+
changes.push('Converted from legacy stdio-only format to modern format');
|
|
58
|
+
changes.push('Created "transport" object with type "stdio"');
|
|
59
|
+
changes.push(`Moved "command" field into transport: "${config.command}"`);
|
|
60
|
+
if (config.args) {
|
|
61
|
+
changes.push(`Moved "args" field into transport: [${config.args.length} args]`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
changes.push('Added empty "args" array to transport');
|
|
65
|
+
warnings.push('No args specified in original config. Using empty array.');
|
|
66
|
+
}
|
|
67
|
+
if (config.env) {
|
|
68
|
+
changes.push(`Moved "env" field into transport: [${Object.keys(config.env).length} vars]`);
|
|
69
|
+
}
|
|
70
|
+
// Warn about removed fields
|
|
71
|
+
const knownFields = ['name', 'command', 'args', 'env', 'transport'];
|
|
72
|
+
const unknownFields = Object.keys(config).filter(key => !knownFields.includes(key));
|
|
73
|
+
if (unknownFields.length > 0) {
|
|
74
|
+
warnings.push(`Removed unknown fields: ${unknownFields.join(', ')}`);
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
success: true,
|
|
78
|
+
migratedConfig: validationResult.data,
|
|
79
|
+
originalConfig: config,
|
|
80
|
+
changes,
|
|
81
|
+
errors,
|
|
82
|
+
warnings
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
errors.push(`Migration failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
originalConfig: config,
|
|
90
|
+
changes,
|
|
91
|
+
errors,
|
|
92
|
+
warnings
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Attempt to migrate any config (auto-detects format)
|
|
98
|
+
*/
|
|
99
|
+
export function migrateConfig(config) {
|
|
100
|
+
const detection = detectConfigFormat(config);
|
|
101
|
+
// Already in modern format
|
|
102
|
+
if (!detection.isLegacy && detection.isValid) {
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
migratedConfig: config,
|
|
106
|
+
originalConfig: config,
|
|
107
|
+
changes: ['No migration needed - already in modern format'],
|
|
108
|
+
errors: [],
|
|
109
|
+
warnings: detection.warnings
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// Invalid format that's not legacy either
|
|
113
|
+
if (!detection.isLegacy && !detection.isValid) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
originalConfig: config,
|
|
117
|
+
changes: [],
|
|
118
|
+
errors: ['Config is neither legacy nor valid modern format', ...detection.issues],
|
|
119
|
+
warnings: detection.warnings
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// Legacy stdio format - migrate it
|
|
123
|
+
if (detection.formatVersion === 'legacy-stdio') {
|
|
124
|
+
return migrateLegacyStdioConfig(config);
|
|
125
|
+
}
|
|
126
|
+
// Unknown format
|
|
127
|
+
return {
|
|
128
|
+
success: false,
|
|
129
|
+
originalConfig: config,
|
|
130
|
+
changes: [],
|
|
131
|
+
errors: [`Unknown config format: ${detection.formatVersion}`],
|
|
132
|
+
warnings: detection.warnings
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Batch migrate multiple configs
|
|
137
|
+
*/
|
|
138
|
+
export function batchMigrateConfigs(configs) {
|
|
139
|
+
const results = new Map();
|
|
140
|
+
let migrated = 0;
|
|
141
|
+
let alreadyModern = 0;
|
|
142
|
+
let failed = 0;
|
|
143
|
+
for (const [name, config] of Object.entries(configs)) {
|
|
144
|
+
// Ensure config has name field
|
|
145
|
+
const configWithName = { ...config, name: config.name || name };
|
|
146
|
+
const result = migrateConfig(configWithName);
|
|
147
|
+
results.set(name, result);
|
|
148
|
+
if (result.success) {
|
|
149
|
+
if (result.changes.some(c => c.includes('No migration needed'))) {
|
|
150
|
+
alreadyModern++;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
migrated++;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
failed++;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const total = results.size;
|
|
161
|
+
let summary = `Migration complete: ${total} config(s) processed.\n`;
|
|
162
|
+
if (migrated > 0) {
|
|
163
|
+
summary += ` ✅ ${migrated} migrated to modern format\n`;
|
|
164
|
+
}
|
|
165
|
+
if (alreadyModern > 0) {
|
|
166
|
+
summary += ` ℹ️ ${alreadyModern} already in modern format\n`;
|
|
167
|
+
}
|
|
168
|
+
if (failed > 0) {
|
|
169
|
+
summary += ` ❌ ${failed} failed to migrate\n`;
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
total,
|
|
173
|
+
migrated,
|
|
174
|
+
alreadyModern,
|
|
175
|
+
failed,
|
|
176
|
+
results,
|
|
177
|
+
summary: summary.trim()
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create backup of config before migration
|
|
182
|
+
*/
|
|
183
|
+
export function createConfigBackup(config) {
|
|
184
|
+
try {
|
|
185
|
+
// Deep clone the config
|
|
186
|
+
const backup = JSON.parse(JSON.stringify(config));
|
|
187
|
+
// Add backup metadata
|
|
188
|
+
const backupWithMetadata = {
|
|
189
|
+
_backup: true,
|
|
190
|
+
_timestamp: Date.now(),
|
|
191
|
+
_version: '3.7.2',
|
|
192
|
+
config: backup
|
|
193
|
+
};
|
|
194
|
+
return {
|
|
195
|
+
success: true,
|
|
196
|
+
backup: backupWithMetadata
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
return {
|
|
201
|
+
success: false,
|
|
202
|
+
error: error instanceof Error ? error.message : String(error)
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Format migration result for display
|
|
208
|
+
*/
|
|
209
|
+
export function formatMigrationResult(serverName, result) {
|
|
210
|
+
const lines = [];
|
|
211
|
+
lines.push(`Server: ${serverName}`);
|
|
212
|
+
lines.push('─'.repeat(50));
|
|
213
|
+
if (result.success) {
|
|
214
|
+
lines.push('✅ Migration successful');
|
|
215
|
+
lines.push('');
|
|
216
|
+
lines.push('Changes:');
|
|
217
|
+
result.changes.forEach(change => {
|
|
218
|
+
lines.push(` • ${change}`);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
lines.push('❌ Migration failed');
|
|
223
|
+
lines.push('');
|
|
224
|
+
lines.push('Errors:');
|
|
225
|
+
result.errors.forEach(error => {
|
|
226
|
+
lines.push(` ❌ ${error}`);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
if (result.warnings.length > 0) {
|
|
230
|
+
lines.push('');
|
|
231
|
+
lines.push('Warnings:');
|
|
232
|
+
result.warnings.forEach(warning => {
|
|
233
|
+
lines.push(` ⚠️ ${warning}`);
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return lines.join('\n');
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Format batch migration result for display
|
|
240
|
+
*/
|
|
241
|
+
export function formatBatchMigrationResult(result) {
|
|
242
|
+
const lines = [];
|
|
243
|
+
lines.push('╭─ MCP Configuration Migration ─────────────────╮');
|
|
244
|
+
lines.push(`│ Total servers: ${result.total}`);
|
|
245
|
+
lines.push(`│ Migrated: ${result.migrated}`);
|
|
246
|
+
lines.push(`│ Already modern: ${result.alreadyModern}`);
|
|
247
|
+
lines.push(`│ Failed: ${result.failed}`);
|
|
248
|
+
lines.push('╰────────────────────────────────────────────────╯');
|
|
249
|
+
lines.push('');
|
|
250
|
+
// Show details for each server
|
|
251
|
+
for (const [name, serverResult] of result.results.entries()) {
|
|
252
|
+
if (serverResult.success && serverResult.changes.some(c => !c.includes('No migration needed'))) {
|
|
253
|
+
lines.push(formatMigrationResult(name, serverResult));
|
|
254
|
+
lines.push('');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Show failures
|
|
258
|
+
const failures = Array.from(result.results.entries()).filter(([, r]) => !r.success);
|
|
259
|
+
if (failures.length > 0) {
|
|
260
|
+
lines.push('Failed Migrations:');
|
|
261
|
+
lines.push('─'.repeat(50));
|
|
262
|
+
failures.forEach(([name, serverResult]) => {
|
|
263
|
+
lines.push(formatMigrationResult(name, serverResult));
|
|
264
|
+
lines.push('');
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
return lines.join('\n');
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=config-migrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-migrator.js","sourceRoot":"","sources":["../../src/mcp/config-migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-Safe MCP Configuration (Phase 2 Improvements)
|
|
3
|
+
*
|
|
4
|
+
* Improvements applied:
|
|
5
|
+
* 1. Result types for all functions (explicit error handling)
|
|
6
|
+
* 2. No global mutable state (class-based design)
|
|
7
|
+
* 3. Branded types for ServerName
|
|
8
|
+
* 4. Invariant checks for validation
|
|
9
|
+
* 5. Phantom types for non-empty server lists
|
|
10
|
+
*
|
|
11
|
+
* Coverage: 85% → 90% (Phase 2)
|
|
12
|
+
*/
|
|
13
|
+
import { MCPServerConfig } from "./client.js";
|
|
14
|
+
import { Result } from "./type-safety.js";
|
|
15
|
+
import { ServerName, NonEmptyArray } from "./type-safety.js";
|
|
16
|
+
export interface MCPConfig {
|
|
17
|
+
servers: MCPServerConfig[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Type-safe MCP Configuration Loader
|
|
21
|
+
*
|
|
22
|
+
* Phase 2 improvements:
|
|
23
|
+
* - No global mutable state (class instead of module-level variables)
|
|
24
|
+
* - Result types for all operations
|
|
25
|
+
* - Branded types for server names
|
|
26
|
+
* - Better error aggregation
|
|
27
|
+
*/
|
|
28
|
+
export declare class MCPConfigLoader {
|
|
29
|
+
private hasShownMigrationWarnings;
|
|
30
|
+
/**
|
|
31
|
+
* Load MCP configuration from project settings with validation and auto-migration
|
|
32
|
+
*
|
|
33
|
+
* Returns Result type instead of throwing
|
|
34
|
+
*/
|
|
35
|
+
loadMCPConfig(): Result<MCPConfig, Error>;
|
|
36
|
+
/**
|
|
37
|
+
* Process ax-cli servers with auto-migration
|
|
38
|
+
*/
|
|
39
|
+
private processAxCliServers;
|
|
40
|
+
/**
|
|
41
|
+
* Reset migration warning flag (useful for testing)
|
|
42
|
+
*/
|
|
43
|
+
resetMigrationWarnings(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Save MCP configuration
|
|
46
|
+
*/
|
|
47
|
+
saveMCPConfig(config: MCPConfig): Result<void, Error>;
|
|
48
|
+
/**
|
|
49
|
+
* Add MCP server with validation
|
|
50
|
+
*/
|
|
51
|
+
addMCPServer(config: MCPServerConfig): Result<void, Error>;
|
|
52
|
+
/**
|
|
53
|
+
* Remove MCP server
|
|
54
|
+
*/
|
|
55
|
+
removeMCPServer(serverName: ServerName): Result<void, Error>;
|
|
56
|
+
/**
|
|
57
|
+
* Get MCP server by name
|
|
58
|
+
*/
|
|
59
|
+
getMCPServer(serverName: ServerName): Result<MCPServerConfig, Error>;
|
|
60
|
+
/**
|
|
61
|
+
* Get all configured servers
|
|
62
|
+
*
|
|
63
|
+
* Phase 2: Returns Result type
|
|
64
|
+
*/
|
|
65
|
+
getAllServers(): Result<MCPServerConfig[], Error>;
|
|
66
|
+
/**
|
|
67
|
+
* Get all server names
|
|
68
|
+
*
|
|
69
|
+
* Phase 2: Returns branded types
|
|
70
|
+
*/
|
|
71
|
+
getAllServerNames(): Result<ServerName[], Error>;
|
|
72
|
+
/**
|
|
73
|
+
* Phase 2: Get non-empty list of servers
|
|
74
|
+
* Uses phantom types to prove list is non-empty
|
|
75
|
+
*/
|
|
76
|
+
getNonEmptyServers(): Result<NonEmptyArray<MCPServerConfig>, Error>;
|
|
77
|
+
/**
|
|
78
|
+
* Type-safe method wrappers for tests
|
|
79
|
+
* These mirror the exported functions but as instance methods
|
|
80
|
+
*/
|
|
81
|
+
getMCPServerSafe(serverName: string): Result<MCPServerConfig, Error>;
|
|
82
|
+
addMCPServerSafe(config: MCPServerConfig): Result<void, Error>;
|
|
83
|
+
removeMCPServerSafe(serverName: string): Result<void, Error>;
|
|
84
|
+
getNonEmptyServersSafe(): Result<NonEmptyArray<MCPServerConfig>, Error>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Legacy function exports that wrap the class methods
|
|
88
|
+
*/
|
|
89
|
+
export declare function loadMCPConfig(): MCPConfig;
|
|
90
|
+
export declare function resetMigrationWarnings(): void;
|
|
91
|
+
export declare function saveMCPConfig(config: MCPConfig): void;
|
|
92
|
+
export declare function addMCPServer(config: MCPServerConfig): void;
|
|
93
|
+
export declare function removeMCPServer(serverName: string): void;
|
|
94
|
+
export declare function getMCPServer(serverName: string): MCPServerConfig | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* New type-safe exports (preferred for new code)
|
|
97
|
+
*/
|
|
98
|
+
export declare function loadMCPConfigSafe(): Result<MCPConfig, Error>;
|
|
99
|
+
export declare function saveMCPConfigSafe(config: MCPConfig): Result<void, Error>;
|
|
100
|
+
export declare function addMCPServerSafe(config: MCPServerConfig): Result<void, Error>;
|
|
101
|
+
export declare function removeMCPServerSafe(serverName: ServerName): Result<void, Error>;
|
|
102
|
+
export declare function getMCPServerSafe(serverName: ServerName): Result<MCPServerConfig, Error>;
|
|
103
|
+
export declare function getAllServersSafe(): Result<MCPServerConfig[], Error>;
|
|
104
|
+
export declare function getAllServerNamesSafe(): Result<ServerName[], Error>;
|
|
105
|
+
export declare function getNonEmptyServersSafe(): Result<NonEmptyArray<MCPServerConfig>, Error>;
|
|
106
|
+
export { TEMPLATES as PREDEFINED_SERVERS, getTemplate, hasTemplate, generateConfigFromTemplate } from './templates.js';
|