solidworks-mcp-server
Version:
Clean Architecture SolidWorks MCP Server - Production-ready with SOLID principles
381 lines • 13.3 kB
TypeScript
/**
* Configuration Management System
* Centralized, type-safe configuration with validation
*/
import { z } from 'zod';
import { Result, IConfigurationProvider } from './core-abstractions';
/**
* Complete configuration schema
*/
declare const ConfigurationSchema: z.ZodObject<{
connection: z.ZodObject<{
solidworksPath: z.ZodOptional<z.ZodString>;
retryAttempts: z.ZodDefault<z.ZodNumber>;
retryDelay: z.ZodDefault<z.ZodNumber>;
timeout: z.ZodDefault<z.ZodNumber>;
autoConnect: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
retryAttempts: number;
retryDelay: number;
timeout: number;
autoConnect: boolean;
solidworksPath?: string | undefined;
}, {
solidworksPath?: string | undefined;
retryAttempts?: number | undefined;
retryDelay?: number | undefined;
timeout?: number | undefined;
autoConnect?: boolean | undefined;
}>;
logging: z.ZodObject<{
level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error", "fatal"]>>;
console: z.ZodDefault<z.ZodBoolean>;
file: z.ZodDefault<z.ZodBoolean>;
filePath: z.ZodOptional<z.ZodString>;
maxFileSize: z.ZodDefault<z.ZodNumber>;
maxFiles: z.ZodDefault<z.ZodNumber>;
format: z.ZodDefault<z.ZodEnum<["json", "text"]>>;
}, "strip", z.ZodTypeAny, {
level: "error" | "debug" | "info" | "warn" | "fatal";
console: boolean;
file: boolean;
maxFileSize: number;
maxFiles: number;
format: "json" | "text";
filePath?: string | undefined;
}, {
level?: "error" | "debug" | "info" | "warn" | "fatal" | undefined;
console?: boolean | undefined;
file?: boolean | undefined;
filePath?: string | undefined;
maxFileSize?: number | undefined;
maxFiles?: number | undefined;
format?: "json" | "text" | undefined;
}>;
cache: z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
maxEntries: z.ZodDefault<z.ZodNumber>;
ttl: z.ZodDefault<z.ZodNumber>;
strategy: z.ZodDefault<z.ZodEnum<["lru", "lfu", "fifo"]>>;
}, "strip", z.ZodTypeAny, {
enabled: boolean;
maxEntries: number;
ttl: number;
strategy: "lru" | "lfu" | "fifo";
}, {
enabled?: boolean | undefined;
maxEntries?: number | undefined;
ttl?: number | undefined;
strategy?: "lru" | "lfu" | "fifo" | undefined;
}>;
performance: z.ZodObject<{
maxConcurrentOperations: z.ZodDefault<z.ZodNumber>;
operationTimeout: z.ZodDefault<z.ZodNumber>;
memoryLimit: z.ZodOptional<z.ZodNumber>;
enableMetrics: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
maxConcurrentOperations: number;
operationTimeout: number;
enableMetrics: boolean;
memoryLimit?: number | undefined;
}, {
maxConcurrentOperations?: number | undefined;
operationTimeout?: number | undefined;
memoryLimit?: number | undefined;
enableMetrics?: boolean | undefined;
}>;
security: z.ZodObject<{
enableMacroSecurity: z.ZodDefault<z.ZodBoolean>;
macroSecurityLevel: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
trustedPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
enableAudit: z.ZodDefault<z.ZodBoolean>;
encryptSensitiveData: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
enableMacroSecurity: boolean;
macroSecurityLevel: "low" | "medium" | "high";
trustedPaths: string[];
enableAudit: boolean;
encryptSensitiveData: boolean;
}, {
enableMacroSecurity?: boolean | undefined;
macroSecurityLevel?: "low" | "medium" | "high" | undefined;
trustedPaths?: string[] | undefined;
enableAudit?: boolean | undefined;
encryptSensitiveData?: boolean | undefined;
}>;
templates: z.ZodObject<{
partTemplate: z.ZodOptional<z.ZodString>;
assemblyTemplate: z.ZodOptional<z.ZodString>;
drawingTemplate: z.ZodOptional<z.ZodString>;
customTemplatesPath: z.ZodOptional<z.ZodString>;
autoDetectTemplates: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
autoDetectTemplates: boolean;
partTemplate?: string | undefined;
assemblyTemplate?: string | undefined;
drawingTemplate?: string | undefined;
customTemplatesPath?: string | undefined;
}, {
partTemplate?: string | undefined;
assemblyTemplate?: string | undefined;
drawingTemplate?: string | undefined;
customTemplatesPath?: string | undefined;
autoDetectTemplates?: boolean | undefined;
}>;
database: z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
type: z.ZodOptional<z.ZodEnum<["mssql", "postgresql", "sqlite"]>>;
connectionString: z.ZodOptional<z.ZodString>;
poolSize: z.ZodDefault<z.ZodNumber>;
connectionTimeout: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
enabled: boolean;
poolSize: number;
connectionTimeout: number;
type?: "mssql" | "postgresql" | "sqlite" | undefined;
connectionString?: string | undefined;
}, {
type?: "mssql" | "postgresql" | "sqlite" | undefined;
enabled?: boolean | undefined;
connectionString?: string | undefined;
poolSize?: number | undefined;
connectionTimeout?: number | undefined;
}>;
features: z.ZodObject<{
enableMacroRecording: z.ZodDefault<z.ZodBoolean>;
enablePDM: z.ZodDefault<z.ZodBoolean>;
enableDesignTables: z.ZodDefault<z.ZodBoolean>;
enableVBAGeneration: z.ZodDefault<z.ZodBoolean>;
enableAdvancedAnalysis: z.ZodDefault<z.ZodBoolean>;
enableExperimentalFeatures: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
enableMacroRecording: boolean;
enablePDM: boolean;
enableDesignTables: boolean;
enableVBAGeneration: boolean;
enableAdvancedAnalysis: boolean;
enableExperimentalFeatures: boolean;
}, {
enableMacroRecording?: boolean | undefined;
enablePDM?: boolean | undefined;
enableDesignTables?: boolean | undefined;
enableVBAGeneration?: boolean | undefined;
enableAdvancedAnalysis?: boolean | undefined;
enableExperimentalFeatures?: boolean | undefined;
}>;
environment: z.ZodDefault<z.ZodEnum<["development", "staging", "production"]>>;
version: z.ZodDefault<z.ZodString>;
}, "strip", z.ZodTypeAny, {
connection: {
retryAttempts: number;
retryDelay: number;
timeout: number;
autoConnect: boolean;
solidworksPath?: string | undefined;
};
logging: {
level: "error" | "debug" | "info" | "warn" | "fatal";
console: boolean;
file: boolean;
maxFileSize: number;
maxFiles: number;
format: "json" | "text";
filePath?: string | undefined;
};
cache: {
enabled: boolean;
maxEntries: number;
ttl: number;
strategy: "lru" | "lfu" | "fifo";
};
performance: {
maxConcurrentOperations: number;
operationTimeout: number;
enableMetrics: boolean;
memoryLimit?: number | undefined;
};
security: {
enableMacroSecurity: boolean;
macroSecurityLevel: "low" | "medium" | "high";
trustedPaths: string[];
enableAudit: boolean;
encryptSensitiveData: boolean;
};
templates: {
autoDetectTemplates: boolean;
partTemplate?: string | undefined;
assemblyTemplate?: string | undefined;
drawingTemplate?: string | undefined;
customTemplatesPath?: string | undefined;
};
database: {
enabled: boolean;
poolSize: number;
connectionTimeout: number;
type?: "mssql" | "postgresql" | "sqlite" | undefined;
connectionString?: string | undefined;
};
features: {
enableMacroRecording: boolean;
enablePDM: boolean;
enableDesignTables: boolean;
enableVBAGeneration: boolean;
enableAdvancedAnalysis: boolean;
enableExperimentalFeatures: boolean;
};
environment: "development" | "staging" | "production";
version: string;
}, {
connection: {
solidworksPath?: string | undefined;
retryAttempts?: number | undefined;
retryDelay?: number | undefined;
timeout?: number | undefined;
autoConnect?: boolean | undefined;
};
logging: {
level?: "error" | "debug" | "info" | "warn" | "fatal" | undefined;
console?: boolean | undefined;
file?: boolean | undefined;
filePath?: string | undefined;
maxFileSize?: number | undefined;
maxFiles?: number | undefined;
format?: "json" | "text" | undefined;
};
cache: {
enabled?: boolean | undefined;
maxEntries?: number | undefined;
ttl?: number | undefined;
strategy?: "lru" | "lfu" | "fifo" | undefined;
};
performance: {
maxConcurrentOperations?: number | undefined;
operationTimeout?: number | undefined;
memoryLimit?: number | undefined;
enableMetrics?: boolean | undefined;
};
security: {
enableMacroSecurity?: boolean | undefined;
macroSecurityLevel?: "low" | "medium" | "high" | undefined;
trustedPaths?: string[] | undefined;
enableAudit?: boolean | undefined;
encryptSensitiveData?: boolean | undefined;
};
templates: {
partTemplate?: string | undefined;
assemblyTemplate?: string | undefined;
drawingTemplate?: string | undefined;
customTemplatesPath?: string | undefined;
autoDetectTemplates?: boolean | undefined;
};
database: {
type?: "mssql" | "postgresql" | "sqlite" | undefined;
enabled?: boolean | undefined;
connectionString?: string | undefined;
poolSize?: number | undefined;
connectionTimeout?: number | undefined;
};
features: {
enableMacroRecording?: boolean | undefined;
enablePDM?: boolean | undefined;
enableDesignTables?: boolean | undefined;
enableVBAGeneration?: boolean | undefined;
enableAdvancedAnalysis?: boolean | undefined;
enableExperimentalFeatures?: boolean | undefined;
};
environment?: "development" | "staging" | "production" | undefined;
version?: string | undefined;
}>;
export type Configuration = z.infer<typeof ConfigurationSchema>;
/**
* Configuration source interface
*/
interface IConfigurationSource {
load(): Promise<Result<Record<string, unknown>>>;
save?(config: Record<string, unknown>): Promise<Result<void>>;
priority: number;
}
/**
* Main configuration manager
*/
export declare class ConfigurationManager implements IConfigurationProvider {
private config;
private readonly sources;
private readonly listeners;
constructor();
/**
* Add a configuration source
*/
addSource(source: IConfigurationSource): void;
/**
* Load configuration from all sources
*/
reload(): Promise<Result<void>>;
/**
* Get configuration value
*/
get<T = unknown>(key: string): T | undefined;
/**
* Get required configuration value
*/
getRequired<T = unknown>(key: string): T;
/**
* Set configuration value
*/
set(key: string, value: unknown): void;
/**
* Check if configuration has a key
*/
has(key: string): boolean;
/**
* Validate current configuration
*/
validate(): Result<void>;
/**
* Get full configuration
*/
getConfiguration(): Configuration;
/**
* Save configuration to file
*/
save(filePath?: string): Promise<Result<void>>;
/**
* Watch for configuration changes
*/
watch(key: string, callback: (value: unknown) => void): () => void;
/**
* Deep merge objects
*/
private deepMerge;
/**
* Notify listeners of changes
*/
private notifyChanges;
/**
* Notify listeners for a specific key
*/
private notifyKey;
/**
* Find changed keys between configurations
*/
private findChanges;
}
export declare const configManager: ConfigurationManager;
/**
* Get typed configuration sections
*/
export declare class ConfigHelper {
static getConnectionConfig(): Configuration['connection'];
static getLoggingConfig(): Configuration['logging'];
static getCacheConfig(): Configuration['cache'];
static getPerformanceConfig(): Configuration['performance'];
static getSecurityConfig(): Configuration['security'];
static getTemplatesConfig(): Configuration['templates'];
static getDatabaseConfig(): Configuration['database'];
static getFeatureFlags(): Configuration['features'];
static getEnvironment(): Configuration['environment'];
static isDevelopment(): boolean;
static isProduction(): boolean;
}
export {};
//# sourceMappingURL=configuration-manager.d.ts.map