solidworks-mcp-server 3.0.8 → 3.1.3
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/CHANGELOG.md +175 -98
- package/LICENSE +20 -20
- package/README.md +195 -423
- package/dist/adapters/circuit-breaker.d.ts +84 -0
- package/dist/adapters/circuit-breaker.d.ts.map +1 -0
- package/dist/adapters/circuit-breaker.js +228 -0
- package/dist/adapters/circuit-breaker.js.map +1 -0
- package/dist/adapters/connection-pool.d.ts +83 -0
- package/dist/adapters/connection-pool.d.ts.map +1 -0
- package/dist/adapters/connection-pool.js +282 -0
- package/dist/adapters/connection-pool.js.map +1 -0
- package/dist/adapters/edge-adapter.d.ts +43 -0
- package/dist/adapters/edge-adapter.d.ts.map +1 -0
- package/dist/adapters/edge-adapter.js +417 -0
- package/dist/adapters/edge-adapter.js.map +1 -0
- package/dist/adapters/factory.d.ts +60 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +212 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/feature-complexity-analyzer.d.ts +102 -0
- package/dist/adapters/feature-complexity-analyzer.d.ts.map +1 -0
- package/dist/adapters/feature-complexity-analyzer.js +322 -0
- package/dist/adapters/feature-complexity-analyzer.js.map +1 -0
- package/dist/adapters/macro-generator.d.ts +30 -0
- package/dist/adapters/macro-generator.d.ts.map +1 -0
- package/dist/adapters/macro-generator.js +524 -0
- package/dist/adapters/macro-generator.js.map +1 -0
- package/dist/adapters/mock-solidworks-adapter.d.ts +92 -0
- package/dist/adapters/mock-solidworks-adapter.d.ts.map +1 -0
- package/dist/adapters/mock-solidworks-adapter.js +367 -0
- package/dist/adapters/mock-solidworks-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +376 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +261 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/winax-adapter-enhanced.d.ts +55 -0
- package/dist/adapters/winax-adapter-enhanced.d.ts.map +1 -0
- package/dist/adapters/winax-adapter-enhanced.js +601 -0
- package/dist/adapters/winax-adapter-enhanced.js.map +1 -0
- package/dist/adapters/winax-adapter.d.ts +55 -0
- package/dist/adapters/winax-adapter.d.ts.map +1 -0
- package/dist/adapters/winax-adapter.js +667 -0
- package/dist/adapters/winax-adapter.js.map +1 -0
- package/dist/api/stainless-api.d.ts +29 -0
- package/dist/api/stainless-api.d.ts.map +1 -0
- package/dist/api/stainless-api.js +408 -0
- package/dist/api/stainless-api.js.map +1 -0
- package/dist/cache/manager.d.ts.map +1 -1
- package/dist/cache/manager.js +4 -3
- package/dist/cache/manager.js.map +1 -1
- package/dist/core/interfaces/core-abstractions.d.ts.map +1 -1
- package/dist/core/interfaces/core-abstractions.js.map +1 -1
- package/dist/db/connection.js +4 -4
- package/dist/db/connection.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -79
- package/dist/index.js.map +1 -1
- package/dist/knowledge/chromadb.d.ts.map +1 -1
- package/dist/knowledge/chromadb.js +5 -3
- package/dist/knowledge/chromadb.js.map +1 -1
- package/dist/macro/recorder.d.ts +1 -1
- package/dist/macro/recorder.d.ts.map +1 -1
- package/dist/macro/recorder.js +10 -10
- package/dist/macro/recorder.js.map +1 -1
- package/dist/resources/base.js +10 -10
- package/dist/resources/base.js.map +1 -1
- package/dist/resources/design-table.d.ts +10 -12
- package/dist/resources/design-table.d.ts.map +1 -1
- package/dist/resources/design-table.js +42 -39
- package/dist/resources/design-table.js.map +1 -1
- package/dist/resources/pdm.d.ts +44 -45
- package/dist/resources/pdm.d.ts.map +1 -1
- package/dist/resources/pdm.js +118 -79
- package/dist/resources/pdm.js.map +1 -1
- package/dist/resources/registry.d.ts +1 -1
- package/dist/resources/registry.d.ts.map +1 -1
- package/dist/resources/registry.js +1 -1
- package/dist/shared/constants/solidworks-constants.d.ts.map +1 -1
- package/dist/shared/constants/solidworks-constants.js +9 -9
- package/dist/shared/constants/solidworks-constants.js.map +1 -1
- package/dist/solidworks/api.d.ts +8 -6
- package/dist/solidworks/api.d.ts.map +1 -1
- package/dist/solidworks/api.js +614 -188
- package/dist/solidworks/api.js.map +1 -1
- package/dist/state/store.d.ts +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +14 -14
- package/dist/state/store.js.map +1 -1
- package/dist/tools/analysis.d.ts +12 -2
- package/dist/tools/analysis.d.ts.map +1 -1
- package/dist/tools/analysis.js +141 -31
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/diagnostics.d.ts +1 -1
- package/dist/tools/diagnostics.d.ts.map +1 -1
- package/dist/tools/diagnostics.js +2 -2
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/drawing.d.ts +2 -2
- package/dist/tools/drawing.d.ts.map +1 -1
- package/dist/tools/drawing.js +94 -10
- package/dist/tools/drawing.js.map +1 -1
- package/dist/tools/enhanced-drawing.d.ts +1 -1
- package/dist/tools/enhanced-drawing.d.ts.map +1 -1
- package/dist/tools/enhanced-drawing.js +10 -13
- package/dist/tools/enhanced-drawing.js.map +1 -1
- package/dist/tools/export.d.ts +1 -1
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +88 -14
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/extrusion-helper.d.ts +15 -0
- package/dist/tools/extrusion-helper.d.ts.map +1 -0
- package/dist/tools/extrusion-helper.js +61 -0
- package/dist/tools/extrusion-helper.js.map +1 -0
- package/dist/tools/macro-security.d.ts +2 -2
- package/dist/tools/macro-security.d.ts.map +1 -1
- package/dist/tools/macro-security.js +2 -2
- package/dist/tools/macro-security.js.map +1 -1
- package/dist/tools/modeling.d.ts +2 -2
- package/dist/tools/modeling.d.ts.map +1 -1
- package/dist/tools/modeling.js +6 -6
- package/dist/tools/modeling.js.map +1 -1
- package/dist/tools/native-macro.d.ts +1 -1
- package/dist/tools/native-macro.d.ts.map +1 -1
- package/dist/tools/native-macro.js +246 -239
- package/dist/tools/native-macro.js.map +1 -1
- package/dist/tools/sketch.d.ts +28 -28
- package/dist/tools/sketch.d.ts.map +1 -1
- package/dist/tools/sketch.js +202 -136
- package/dist/tools/sketch.js.map +1 -1
- package/dist/tools/template-manager.d.ts +5 -5
- package/dist/tools/template-manager.d.ts.map +1 -1
- package/dist/tools/template-manager.js +66 -65
- package/dist/tools/template-manager.js.map +1 -1
- package/dist/tools/vba-advanced.d.ts +10 -10
- package/dist/tools/vba-advanced.d.ts.map +1 -1
- package/dist/tools/vba-advanced.js +791 -708
- package/dist/tools/vba-advanced.js.map +1 -1
- package/dist/tools/vba-assembly.d.ts +10 -10
- package/dist/tools/vba-assembly.d.ts.map +1 -1
- package/dist/tools/vba-assembly.js +562 -500
- package/dist/tools/vba-assembly.js.map +1 -1
- package/dist/tools/vba-drawing.d.ts +12 -12
- package/dist/tools/vba-drawing.d.ts.map +1 -1
- package/dist/tools/vba-drawing.js +681 -572
- package/dist/tools/vba-drawing.js.map +1 -1
- package/dist/tools/vba-file-management.d.ts +12 -12
- package/dist/tools/vba-file-management.d.ts.map +1 -1
- package/dist/tools/vba-file-management.js +662 -589
- package/dist/tools/vba-file-management.js.map +1 -1
- package/dist/tools/vba-part.d.ts +10 -10
- package/dist/tools/vba-part.d.ts.map +1 -1
- package/dist/tools/vba-part.js +484 -426
- package/dist/tools/vba-part.js.map +1 -1
- package/dist/tools/vba.d.ts +361 -361
- package/dist/tools/vba.d.ts.map +1 -1
- package/dist/tools/vba.js +67 -81
- package/dist/tools/vba.js.map +1 -1
- package/dist/utils/config.js +2 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/environment.d.ts +243 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/environment.js +207 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +6 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/solidworks-config.d.ts +39 -0
- package/dist/utils/solidworks-config.d.ts.map +1 -0
- package/dist/utils/solidworks-config.js +156 -0
- package/dist/utils/solidworks-config.js.map +1 -0
- package/package.json +84 -84
- package/scripts/setup.js +70 -70
- package/dist/application/services/command-bus.d.ts +0 -39
- package/dist/application/services/command-bus.d.ts.map +0 -1
- package/dist/application/services/command-bus.js +0 -88
- package/dist/application/services/command-bus.js.map +0 -1
- package/dist/application/services/event-bus.d.ts +0 -31
- package/dist/application/services/event-bus.d.ts.map +0 -1
- package/dist/application/services/event-bus.js +0 -83
- package/dist/application/services/event-bus.js.map +0 -1
- package/dist/application/services/query-bus.d.ts +0 -30
- package/dist/application/services/query-bus.d.ts.map +0 -1
- package/dist/application/services/query-bus.js +0 -59
- package/dist/application/services/query-bus.js.map +0 -1
- package/dist/application/services/tool-registry.d.ts +0 -53
- package/dist/application/services/tool-registry.d.ts.map +0 -1
- package/dist/application/services/tool-registry.js +0 -81
- package/dist/application/services/tool-registry.js.map +0 -1
- package/dist/application/use-cases/analysis/index.d.ts +0 -13
- package/dist/application/use-cases/analysis/index.d.ts.map +0 -1
- package/dist/application/use-cases/analysis/index.js +0 -17
- package/dist/application/use-cases/analysis/index.js.map +0 -1
- package/dist/application/use-cases/drawing/index.d.ts +0 -13
- package/dist/application/use-cases/drawing/index.d.ts.map +0 -1
- package/dist/application/use-cases/drawing/index.js +0 -17
- package/dist/application/use-cases/drawing/index.js.map +0 -1
- package/dist/application/use-cases/export/index.d.ts +0 -13
- package/dist/application/use-cases/export/index.d.ts.map +0 -1
- package/dist/application/use-cases/export/index.js +0 -17
- package/dist/application/use-cases/export/index.js.map +0 -1
- package/dist/application/use-cases/macro/index.d.ts +0 -13
- package/dist/application/use-cases/macro/index.d.ts.map +0 -1
- package/dist/application/use-cases/macro/index.js +0 -17
- package/dist/application/use-cases/macro/index.js.map +0 -1
- package/dist/application/use-cases/modeling/index.d.ts +0 -56
- package/dist/application/use-cases/modeling/index.d.ts.map +0 -1
- package/dist/application/use-cases/modeling/index.js +0 -385
- package/dist/application/use-cases/modeling/index.js.map +0 -1
- package/dist/index.refactored.d.ts +0 -7
- package/dist/index.refactored.d.ts.map +0 -1
- package/dist/index.refactored.js +0 -254
- package/dist/index.refactored.js.map +0 -1
- package/dist/infrastructure/config/configuration-manager.d.ts +0 -381
- package/dist/infrastructure/config/configuration-manager.d.ts.map +0 -1
- package/dist/infrastructure/config/configuration-manager.js +0 -566
- package/dist/infrastructure/config/configuration-manager.js.map +0 -1
- package/dist/infrastructure/container/service-locator.d.ts +0 -14
- package/dist/infrastructure/container/service-locator.d.ts.map +0 -1
- package/dist/infrastructure/container/service-locator.js +0 -38
- package/dist/infrastructure/container/service-locator.js.map +0 -1
- package/dist/infrastructure/logging/logger.d.ts +0 -24
- package/dist/infrastructure/logging/logger.d.ts.map +0 -1
- package/dist/infrastructure/logging/logger.js +0 -65
- package/dist/infrastructure/logging/logger.js.map +0 -1
- package/dist/infrastructure/solidworks/solidworks-adapter.d.ts +0 -43
- package/dist/infrastructure/solidworks/solidworks-adapter.d.ts.map +0 -1
- package/dist/infrastructure/solidworks/solidworks-adapter.js +0 -527
- package/dist/infrastructure/solidworks/solidworks-adapter.js.map +0 -1
- package/dist/presentation/mcp/request-handler.d.ts +0 -41
- package/dist/presentation/mcp/request-handler.d.ts.map +0 -1
- package/dist/presentation/mcp/request-handler.js +0 -100
- package/dist/presentation/mcp/request-handler.js.map +0 -1
- package/dist/presentation/transformers/error-transformer.d.ts +0 -16
- package/dist/presentation/transformers/error-transformer.d.ts.map +0 -1
- package/dist/presentation/transformers/error-transformer.js +0 -44
- package/dist/presentation/transformers/error-transformer.js.map +0 -1
- package/dist/presentation/transformers/response-transformer.d.ts +0 -24
- package/dist/presentation/transformers/response-transformer.d.ts.map +0 -1
- package/dist/presentation/transformers/response-transformer.js +0 -102
- package/dist/presentation/transformers/response-transformer.js.map +0 -1
- package/dist/tools/drawing-analysis.d.ts +0 -9
- package/dist/tools/drawing-analysis.d.ts.map +0 -1
- package/dist/tools/drawing-analysis.js +0 -239
- package/dist/tools/drawing-analysis.js.map +0 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter Factory for SolidWorks MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized adapter creation with:
|
|
5
|
+
* - Multiple adapter type support
|
|
6
|
+
* - Circuit breaker integration
|
|
7
|
+
* - Connection pooling
|
|
8
|
+
* - Automatic fallback selection
|
|
9
|
+
*/
|
|
10
|
+
import { logger } from '../utils/logger.js';
|
|
11
|
+
import { CircuitBreakerAdapter } from './circuit-breaker.js';
|
|
12
|
+
import { ConnectionPoolAdapter } from './connection-pool.js';
|
|
13
|
+
import { WinAxAdapter } from './winax-adapter.js';
|
|
14
|
+
/**
|
|
15
|
+
* Factory for creating and managing SolidWorks adapters
|
|
16
|
+
*/
|
|
17
|
+
export class AdapterFactory {
|
|
18
|
+
static instance;
|
|
19
|
+
adapters = new Map();
|
|
20
|
+
defaultConfig = {
|
|
21
|
+
type: 'winax',
|
|
22
|
+
enableCircuitBreaker: true,
|
|
23
|
+
circuitBreakerThreshold: 5,
|
|
24
|
+
circuitBreakerTimeout: 60000,
|
|
25
|
+
enableRetry: true,
|
|
26
|
+
maxRetries: 3,
|
|
27
|
+
retryDelay: 1000,
|
|
28
|
+
enableConnectionPool: false,
|
|
29
|
+
poolSize: 3,
|
|
30
|
+
enableMetrics: true,
|
|
31
|
+
enableLogging: true,
|
|
32
|
+
logLevel: 'info',
|
|
33
|
+
};
|
|
34
|
+
constructor() { }
|
|
35
|
+
/**
|
|
36
|
+
* Get singleton instance of factory
|
|
37
|
+
*/
|
|
38
|
+
static getInstance() {
|
|
39
|
+
if (!AdapterFactory.instance) {
|
|
40
|
+
AdapterFactory.instance = new AdapterFactory();
|
|
41
|
+
}
|
|
42
|
+
return AdapterFactory.instance;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create or get adapter based on configuration
|
|
46
|
+
*/
|
|
47
|
+
async createAdapter(config) {
|
|
48
|
+
const fullConfig = { ...this.defaultConfig, ...config };
|
|
49
|
+
const cacheKey = this.getCacheKey(fullConfig);
|
|
50
|
+
// Return cached adapter if available
|
|
51
|
+
if (this.adapters.has(cacheKey)) {
|
|
52
|
+
const adapter = this.adapters.get(cacheKey);
|
|
53
|
+
const health = await adapter.healthCheck();
|
|
54
|
+
if (health.healthy) {
|
|
55
|
+
logger.info(`Reusing cached adapter: ${cacheKey}`);
|
|
56
|
+
return adapter;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
logger.warn(`Cached adapter unhealthy, creating new one: ${cacheKey}`);
|
|
60
|
+
this.adapters.delete(cacheKey);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Create new adapter
|
|
64
|
+
let adapter = await this.createBaseAdapter(fullConfig);
|
|
65
|
+
// Wrap with circuit breaker if enabled
|
|
66
|
+
if (fullConfig.enableCircuitBreaker) {
|
|
67
|
+
adapter = new CircuitBreakerAdapter(adapter, fullConfig.circuitBreakerThreshold, fullConfig.circuitBreakerTimeout);
|
|
68
|
+
}
|
|
69
|
+
// Wrap with connection pool if enabled
|
|
70
|
+
if (fullConfig.enableConnectionPool) {
|
|
71
|
+
adapter = new ConnectionPoolAdapter(() => this.createBaseAdapter(fullConfig), fullConfig.poolSize);
|
|
72
|
+
await adapter.initialize();
|
|
73
|
+
}
|
|
74
|
+
// Cache the adapter
|
|
75
|
+
this.adapters.set(cacheKey, adapter);
|
|
76
|
+
logger.info(`Created new adapter: ${cacheKey}`);
|
|
77
|
+
return adapter;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Create base adapter based on type
|
|
81
|
+
*/
|
|
82
|
+
async createBaseAdapter(config) {
|
|
83
|
+
switch (config.type) {
|
|
84
|
+
case 'winax': {
|
|
85
|
+
const winaxAdapter = new WinAxAdapter();
|
|
86
|
+
await winaxAdapter.connect();
|
|
87
|
+
return winaxAdapter;
|
|
88
|
+
}
|
|
89
|
+
case 'macro-fallback': {
|
|
90
|
+
// Create a winax adapter that primarily uses macros
|
|
91
|
+
const macroAdapter = new WinAxAdapter();
|
|
92
|
+
await macroAdapter.connect();
|
|
93
|
+
// Configure to prefer macro execution
|
|
94
|
+
return macroAdapter;
|
|
95
|
+
}
|
|
96
|
+
case 'hybrid': {
|
|
97
|
+
// Create a hybrid adapter that intelligently switches between methods
|
|
98
|
+
const hybridAdapter = new WinAxAdapter();
|
|
99
|
+
await hybridAdapter.connect();
|
|
100
|
+
return hybridAdapter;
|
|
101
|
+
}
|
|
102
|
+
default:
|
|
103
|
+
throw new Error(`Unknown adapter type: ${config.type}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the best available adapter based on system capabilities
|
|
108
|
+
*/
|
|
109
|
+
async getBestAdapter() {
|
|
110
|
+
// Try to determine the best adapter type
|
|
111
|
+
const systemCapabilities = await this.detectSystemCapabilities();
|
|
112
|
+
const config = {};
|
|
113
|
+
if (systemCapabilities.hasWinAx) {
|
|
114
|
+
config.type = 'winax';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
config.type = 'macro-fallback';
|
|
118
|
+
}
|
|
119
|
+
// Enable circuit breaker for stability
|
|
120
|
+
config.enableCircuitBreaker = true;
|
|
121
|
+
// Enable connection pool for performance if we have enough resources
|
|
122
|
+
if (systemCapabilities.memoryGB > 8) {
|
|
123
|
+
config.enableConnectionPool = true;
|
|
124
|
+
config.poolSize = Math.min(5, Math.floor(systemCapabilities.memoryGB / 4));
|
|
125
|
+
}
|
|
126
|
+
return this.createAdapter(config);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Detect system capabilities
|
|
130
|
+
*/
|
|
131
|
+
async detectSystemCapabilities() {
|
|
132
|
+
const capabilities = {
|
|
133
|
+
hasWinAx: false,
|
|
134
|
+
hasDotNet: false,
|
|
135
|
+
memoryGB: 4,
|
|
136
|
+
cpuCores: 2,
|
|
137
|
+
osType: process.platform,
|
|
138
|
+
};
|
|
139
|
+
// Check for winax availability
|
|
140
|
+
try {
|
|
141
|
+
require('winax');
|
|
142
|
+
capabilities.hasWinAx = true;
|
|
143
|
+
}
|
|
144
|
+
catch (_e) {
|
|
145
|
+
capabilities.hasWinAx = false;
|
|
146
|
+
}
|
|
147
|
+
// Get system memory
|
|
148
|
+
try {
|
|
149
|
+
const os = await import('node:os');
|
|
150
|
+
capabilities.memoryGB = Math.floor(os.totalmem() / (1024 * 1024 * 1024));
|
|
151
|
+
capabilities.cpuCores = os.cpus().length;
|
|
152
|
+
}
|
|
153
|
+
catch (_e) {
|
|
154
|
+
// Use defaults
|
|
155
|
+
}
|
|
156
|
+
return capabilities;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Generate cache key for adapter configuration
|
|
160
|
+
*/
|
|
161
|
+
getCacheKey(config) {
|
|
162
|
+
return `${config.type}_cb${config.enableCircuitBreaker}_pool${config.enableConnectionPool}`;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get all cached adapters
|
|
166
|
+
*/
|
|
167
|
+
getCachedAdapters() {
|
|
168
|
+
return new Map(this.adapters);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Clear all cached adapters
|
|
172
|
+
*/
|
|
173
|
+
async clearCache() {
|
|
174
|
+
for (const [key, adapter] of this.adapters.entries()) {
|
|
175
|
+
try {
|
|
176
|
+
await adapter.disconnect();
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
logger.error(`Failed to disconnect adapter ${key}:`, e);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.adapters.clear();
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Health check all cached adapters
|
|
186
|
+
*/
|
|
187
|
+
async healthCheckAll() {
|
|
188
|
+
const results = new Map();
|
|
189
|
+
for (const [key, adapter] of this.adapters.entries()) {
|
|
190
|
+
try {
|
|
191
|
+
const health = await adapter.healthCheck();
|
|
192
|
+
results.set(key, health);
|
|
193
|
+
}
|
|
194
|
+
catch (_e) {
|
|
195
|
+
results.set(key, {
|
|
196
|
+
healthy: false,
|
|
197
|
+
lastCheck: new Date(),
|
|
198
|
+
errorCount: 1,
|
|
199
|
+
successCount: 0,
|
|
200
|
+
averageResponseTime: 0,
|
|
201
|
+
connectionStatus: 'error',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return results;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Singleton export for convenience
|
|
210
|
+
*/
|
|
211
|
+
export const adapterFactory = AdapterFactory.getInstance();
|
|
212
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Complexity Analyzer
|
|
3
|
+
*
|
|
4
|
+
* Intelligently analyzes SolidWorks operations to determine the best execution method:
|
|
5
|
+
* - Direct COM for simple operations (≤12 parameters)
|
|
6
|
+
* - VBA Macro fallback for complex operations (13+ parameters)
|
|
7
|
+
*
|
|
8
|
+
* This solves the fundamental limitation of Node.js COM bridges (winax, edge-js)
|
|
9
|
+
* which fail when calling methods with more than 12-13 parameters.
|
|
10
|
+
*/
|
|
11
|
+
import type { ExtrusionParameters } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Feature method complexity information
|
|
14
|
+
*/
|
|
15
|
+
export interface FeatureComplexity {
|
|
16
|
+
method: string;
|
|
17
|
+
parameterCount: number;
|
|
18
|
+
requiresMacro: boolean;
|
|
19
|
+
criticalParameters: string[];
|
|
20
|
+
alternativeMethod?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Execution strategy recommendation
|
|
24
|
+
*/
|
|
25
|
+
export interface ExecutionStrategy {
|
|
26
|
+
method: string;
|
|
27
|
+
strategy: 'direct-com' | 'vba-macro' | 'hybrid';
|
|
28
|
+
confidence: number;
|
|
29
|
+
reason: string;
|
|
30
|
+
estimatedSuccessRate: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* SolidWorks API method parameter counts
|
|
34
|
+
* Based on SolidWorks API documentation (versions 2021-2025)
|
|
35
|
+
*/
|
|
36
|
+
export declare class FeatureComplexityAnalyzer {
|
|
37
|
+
private static readonly COM_PARAMETER_LIMIT;
|
|
38
|
+
private static readonly HYBRID_THRESHOLD;
|
|
39
|
+
/**
|
|
40
|
+
* Feature complexity database
|
|
41
|
+
* Maps SolidWorks API methods to their characteristics
|
|
42
|
+
*/
|
|
43
|
+
private static readonly FEATURE_COMPLEXITIES;
|
|
44
|
+
/**
|
|
45
|
+
* Analyze parameter complexity of an operation
|
|
46
|
+
*/
|
|
47
|
+
static analyzeParameters(params: Record<string, any>): {
|
|
48
|
+
count: number;
|
|
49
|
+
complexity: 'simple' | 'moderate' | 'complex';
|
|
50
|
+
hasOptionals: boolean;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Determine execution strategy for a feature operation
|
|
54
|
+
*/
|
|
55
|
+
static determineStrategy(methodName: string, parameters: Record<string, any>): ExecutionStrategy;
|
|
56
|
+
/**
|
|
57
|
+
* Check if a method requires VBA macro fallback
|
|
58
|
+
*/
|
|
59
|
+
static requiresMacro(methodName: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get parameter count for a method
|
|
62
|
+
*/
|
|
63
|
+
static getParameterCount(methodName: string): number;
|
|
64
|
+
/**
|
|
65
|
+
* Get critical parameters that must be set correctly
|
|
66
|
+
*/
|
|
67
|
+
static getCriticalParameters(methodName: string): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Analyze extrusion parameters specifically
|
|
70
|
+
*/
|
|
71
|
+
static analyzeExtrusion(params: ExtrusionParameters): ExecutionStrategy;
|
|
72
|
+
/**
|
|
73
|
+
* Get all methods that require macro fallback
|
|
74
|
+
*/
|
|
75
|
+
static getComplexMethods(): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Get statistics about feature complexity
|
|
78
|
+
*/
|
|
79
|
+
static getComplexityStats(): {
|
|
80
|
+
total: number;
|
|
81
|
+
requireMacro: number;
|
|
82
|
+
directCOM: number;
|
|
83
|
+
percentage: number;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Log complexity analysis for debugging
|
|
87
|
+
*/
|
|
88
|
+
static logAnalysis(methodName: string, params: Record<string, any>): void;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Helper function to determine if direct COM should be attempted
|
|
92
|
+
*/
|
|
93
|
+
export declare function shouldAttemptDirectCOM(methodName: string, params: Record<string, any>): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Helper function to determine if macro fallback should be used
|
|
96
|
+
*/
|
|
97
|
+
export declare function shouldUseMacroFallback(methodName: string, params: Record<string, any>): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Helper function to get recommended approach
|
|
100
|
+
*/
|
|
101
|
+
export declare function getRecommendedApproach(methodName: string, params: Record<string, any>): string;
|
|
102
|
+
//# sourceMappingURL=feature-complexity-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-complexity-analyzer.d.ts","sourceRoot":"","sources":["../../src/adapters/feature-complexity-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CA8G1C;IAEF;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QACrD,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QAC9C,YAAY,EAAE,OAAO,CAAC;KACvB;IAUD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB;IAgDhG;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAKjD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAKpD;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAK1D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,iBAAiB;IAiDvE;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM,EAAE;IAMpC;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB;IAaD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAc1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAG/F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAG/F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAa9F"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Complexity Analyzer
|
|
3
|
+
*
|
|
4
|
+
* Intelligently analyzes SolidWorks operations to determine the best execution method:
|
|
5
|
+
* - Direct COM for simple operations (≤12 parameters)
|
|
6
|
+
* - VBA Macro fallback for complex operations (13+ parameters)
|
|
7
|
+
*
|
|
8
|
+
* This solves the fundamental limitation of Node.js COM bridges (winax, edge-js)
|
|
9
|
+
* which fail when calling methods with more than 12-13 parameters.
|
|
10
|
+
*/
|
|
11
|
+
import { logger } from '../utils/logger.js';
|
|
12
|
+
/**
|
|
13
|
+
* SolidWorks API method parameter counts
|
|
14
|
+
* Based on SolidWorks API documentation (versions 2021-2025)
|
|
15
|
+
*/
|
|
16
|
+
export class FeatureComplexityAnalyzer {
|
|
17
|
+
static COM_PARAMETER_LIMIT = 12; // Empirical limit for Node.js COM bridges
|
|
18
|
+
static HYBRID_THRESHOLD = 10; // Start considering macro at 10 params
|
|
19
|
+
/**
|
|
20
|
+
* Feature complexity database
|
|
21
|
+
* Maps SolidWorks API methods to their characteristics
|
|
22
|
+
*/
|
|
23
|
+
static FEATURE_COMPLEXITIES = {
|
|
24
|
+
// ========================================
|
|
25
|
+
// EXTRUSION FEATURES
|
|
26
|
+
// ========================================
|
|
27
|
+
FeatureExtrusion: {
|
|
28
|
+
method: 'FeatureExtrusion',
|
|
29
|
+
parameterCount: 13,
|
|
30
|
+
requiresMacro: true,
|
|
31
|
+
criticalParameters: ['depth', 'draft', 'bothDirections'],
|
|
32
|
+
alternativeMethod: 'FeatureExtrusion2',
|
|
33
|
+
},
|
|
34
|
+
FeatureExtrusion2: {
|
|
35
|
+
method: 'FeatureExtrusion2',
|
|
36
|
+
parameterCount: 16,
|
|
37
|
+
requiresMacro: true,
|
|
38
|
+
criticalParameters: ['depth', 'draft', 'bothDirections', 'thinFeature'],
|
|
39
|
+
alternativeMethod: 'FeatureExtrusion3',
|
|
40
|
+
},
|
|
41
|
+
FeatureExtrusion3: {
|
|
42
|
+
method: 'FeatureExtrusion3',
|
|
43
|
+
parameterCount: 23,
|
|
44
|
+
requiresMacro: true,
|
|
45
|
+
criticalParameters: ['depth', 'depth2', 'draft', 'draftAngle', 'thinFeature', 'capEnds'],
|
|
46
|
+
},
|
|
47
|
+
// ========================================
|
|
48
|
+
// REVOLVE FEATURES
|
|
49
|
+
// ========================================
|
|
50
|
+
FeatureRevolve: {
|
|
51
|
+
method: 'FeatureRevolve',
|
|
52
|
+
parameterCount: 10,
|
|
53
|
+
requiresMacro: false,
|
|
54
|
+
criticalParameters: ['angle', 'direction'],
|
|
55
|
+
},
|
|
56
|
+
FeatureRevolve2: {
|
|
57
|
+
method: 'FeatureRevolve2',
|
|
58
|
+
parameterCount: 12,
|
|
59
|
+
requiresMacro: false, // Right at the limit
|
|
60
|
+
criticalParameters: ['angle', 'direction', 'thinFeature'],
|
|
61
|
+
},
|
|
62
|
+
// ========================================
|
|
63
|
+
// SWEEP FEATURES
|
|
64
|
+
// ========================================
|
|
65
|
+
InsertProtrusionSwept: {
|
|
66
|
+
method: 'InsertProtrusionSwept',
|
|
67
|
+
parameterCount: 10,
|
|
68
|
+
requiresMacro: false,
|
|
69
|
+
criticalParameters: ['profileSketch', 'pathSketch'],
|
|
70
|
+
},
|
|
71
|
+
InsertProtrusionSwept4: {
|
|
72
|
+
method: 'InsertProtrusionSwept4',
|
|
73
|
+
parameterCount: 14,
|
|
74
|
+
requiresMacro: true,
|
|
75
|
+
criticalParameters: ['profileSketch', 'pathSketch', 'twistAngle', 'thinFeature'],
|
|
76
|
+
},
|
|
77
|
+
// ========================================
|
|
78
|
+
// LOFT FEATURES
|
|
79
|
+
// ========================================
|
|
80
|
+
InsertProtrusionLoft: {
|
|
81
|
+
method: 'InsertProtrusionLoft',
|
|
82
|
+
parameterCount: 12,
|
|
83
|
+
requiresMacro: false,
|
|
84
|
+
criticalParameters: ['profiles', 'guides'],
|
|
85
|
+
},
|
|
86
|
+
InsertProtrusionLoft3: {
|
|
87
|
+
method: 'InsertProtrusionLoft3',
|
|
88
|
+
parameterCount: 17,
|
|
89
|
+
requiresMacro: true,
|
|
90
|
+
criticalParameters: ['profiles', 'guides', 'centerCurve', 'thinFeature'],
|
|
91
|
+
},
|
|
92
|
+
// ========================================
|
|
93
|
+
// PATTERN FEATURES
|
|
94
|
+
// ========================================
|
|
95
|
+
FeatureLinearPattern4: {
|
|
96
|
+
method: 'FeatureLinearPattern4',
|
|
97
|
+
parameterCount: 18,
|
|
98
|
+
requiresMacro: true,
|
|
99
|
+
criticalParameters: ['direction1', 'spacing1', 'count1', 'direction2', 'spacing2', 'count2'],
|
|
100
|
+
},
|
|
101
|
+
FeatureCircularPattern: {
|
|
102
|
+
method: 'FeatureCircularPattern',
|
|
103
|
+
parameterCount: 15,
|
|
104
|
+
requiresMacro: true,
|
|
105
|
+
criticalParameters: ['axis', 'count', 'angle'],
|
|
106
|
+
},
|
|
107
|
+
// ========================================
|
|
108
|
+
// SIMPLE OPERATIONS (always direct COM)
|
|
109
|
+
// ========================================
|
|
110
|
+
CreateLine: {
|
|
111
|
+
method: 'CreateLine',
|
|
112
|
+
parameterCount: 6,
|
|
113
|
+
requiresMacro: false,
|
|
114
|
+
criticalParameters: ['x1', 'y1', 'z1', 'x2', 'y2', 'z2'],
|
|
115
|
+
},
|
|
116
|
+
CreateCircle: {
|
|
117
|
+
method: 'CreateCircle',
|
|
118
|
+
parameterCount: 4,
|
|
119
|
+
requiresMacro: false,
|
|
120
|
+
criticalParameters: ['x', 'y', 'z', 'radius'],
|
|
121
|
+
},
|
|
122
|
+
InsertSketch: {
|
|
123
|
+
method: 'InsertSketch',
|
|
124
|
+
parameterCount: 1,
|
|
125
|
+
requiresMacro: false,
|
|
126
|
+
criticalParameters: ['exit'],
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Analyze parameter complexity of an operation
|
|
131
|
+
*/
|
|
132
|
+
static analyzeParameters(params) {
|
|
133
|
+
const count = Object.keys(params).filter((key) => params[key] !== undefined && params[key] !== null).length;
|
|
134
|
+
return {
|
|
135
|
+
count,
|
|
136
|
+
complexity: count <= 8 ? 'simple' : count <= 12 ? 'moderate' : 'complex',
|
|
137
|
+
hasOptionals: Object.values(params).some((v) => v === undefined || v === null),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Determine execution strategy for a feature operation
|
|
142
|
+
*/
|
|
143
|
+
static determineStrategy(methodName, parameters) {
|
|
144
|
+
const complexity = FeatureComplexityAnalyzer.FEATURE_COMPLEXITIES[methodName];
|
|
145
|
+
const paramAnalysis = FeatureComplexityAnalyzer.analyzeParameters(parameters);
|
|
146
|
+
// Unknown method - default to direct COM with low confidence
|
|
147
|
+
if (!complexity) {
|
|
148
|
+
logger.warn(`Unknown method: ${methodName}, defaulting to direct COM`);
|
|
149
|
+
return {
|
|
150
|
+
method: methodName,
|
|
151
|
+
strategy: 'direct-com',
|
|
152
|
+
confidence: 0.5,
|
|
153
|
+
reason: 'Unknown method - attempting direct COM',
|
|
154
|
+
estimatedSuccessRate: 0.7,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
// Complex feature requiring macro
|
|
158
|
+
if (complexity.requiresMacro || paramAnalysis.count > FeatureComplexityAnalyzer.COM_PARAMETER_LIMIT) {
|
|
159
|
+
return {
|
|
160
|
+
method: methodName,
|
|
161
|
+
strategy: 'vba-macro',
|
|
162
|
+
confidence: 0.95,
|
|
163
|
+
reason: `Method has ${complexity.parameterCount} parameters (limit: ${FeatureComplexityAnalyzer.COM_PARAMETER_LIMIT})`,
|
|
164
|
+
estimatedSuccessRate: 0.98,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Hybrid approach for moderate complexity
|
|
168
|
+
if (paramAnalysis.count > FeatureComplexityAnalyzer.HYBRID_THRESHOLD) {
|
|
169
|
+
return {
|
|
170
|
+
method: methodName,
|
|
171
|
+
strategy: 'hybrid',
|
|
172
|
+
confidence: 0.85,
|
|
173
|
+
reason: `${paramAnalysis.count} parameters - will try COM first, fallback to macro`,
|
|
174
|
+
estimatedSuccessRate: 0.95,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Simple operation - direct COM
|
|
178
|
+
return {
|
|
179
|
+
method: methodName,
|
|
180
|
+
strategy: 'direct-com',
|
|
181
|
+
confidence: 0.99,
|
|
182
|
+
reason: `Simple operation with ${paramAnalysis.count} parameters`,
|
|
183
|
+
estimatedSuccessRate: 0.99,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if a method requires VBA macro fallback
|
|
188
|
+
*/
|
|
189
|
+
static requiresMacro(methodName) {
|
|
190
|
+
const complexity = FeatureComplexityAnalyzer.FEATURE_COMPLEXITIES[methodName];
|
|
191
|
+
return complexity?.requiresMacro ?? false;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get parameter count for a method
|
|
195
|
+
*/
|
|
196
|
+
static getParameterCount(methodName) {
|
|
197
|
+
const complexity = FeatureComplexityAnalyzer.FEATURE_COMPLEXITIES[methodName];
|
|
198
|
+
return complexity?.parameterCount ?? 0;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get critical parameters that must be set correctly
|
|
202
|
+
*/
|
|
203
|
+
static getCriticalParameters(methodName) {
|
|
204
|
+
const complexity = FeatureComplexityAnalyzer.FEATURE_COMPLEXITIES[methodName];
|
|
205
|
+
return complexity?.criticalParameters ?? [];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Analyze extrusion parameters specifically
|
|
209
|
+
*/
|
|
210
|
+
static analyzeExtrusion(params) {
|
|
211
|
+
// Count actual parameters being used
|
|
212
|
+
let paramCount = 0;
|
|
213
|
+
const criticalParams = [];
|
|
214
|
+
if (params.depth) {
|
|
215
|
+
paramCount++;
|
|
216
|
+
criticalParams.push('depth');
|
|
217
|
+
}
|
|
218
|
+
if (params.draft !== undefined && params.draft !== 0) {
|
|
219
|
+
paramCount += 2;
|
|
220
|
+
criticalParams.push('draft', 'draftWhileExtruding');
|
|
221
|
+
}
|
|
222
|
+
if (params.bothDirections) {
|
|
223
|
+
paramCount += 2;
|
|
224
|
+
criticalParams.push('bothDirections', 'depth2');
|
|
225
|
+
}
|
|
226
|
+
if (params.thinFeature) {
|
|
227
|
+
paramCount += 3;
|
|
228
|
+
criticalParams.push('thinFeature', 'thinThickness', 'capEnds');
|
|
229
|
+
}
|
|
230
|
+
if (params.reverse) {
|
|
231
|
+
paramCount++;
|
|
232
|
+
criticalParams.push('reverse');
|
|
233
|
+
}
|
|
234
|
+
if (params.endCondition && params.endCondition !== 'Blind') {
|
|
235
|
+
paramCount++;
|
|
236
|
+
criticalParams.push('endCondition');
|
|
237
|
+
}
|
|
238
|
+
// Always count base parameters
|
|
239
|
+
paramCount += 5; // sd, flip, dir, t1, t2
|
|
240
|
+
const strategy = paramCount > FeatureComplexityAnalyzer.COM_PARAMETER_LIMIT
|
|
241
|
+
? 'vba-macro'
|
|
242
|
+
: paramCount > FeatureComplexityAnalyzer.HYBRID_THRESHOLD
|
|
243
|
+
? 'hybrid'
|
|
244
|
+
: 'direct-com';
|
|
245
|
+
return {
|
|
246
|
+
method: 'FeatureExtrusion3',
|
|
247
|
+
strategy,
|
|
248
|
+
confidence: strategy === 'vba-macro' ? 0.95 : 0.85,
|
|
249
|
+
reason: `Extrusion with ${paramCount} effective parameters (${criticalParams.join(', ')})`,
|
|
250
|
+
estimatedSuccessRate: strategy === 'vba-macro' ? 0.98 : 0.9,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get all methods that require macro fallback
|
|
255
|
+
*/
|
|
256
|
+
static getComplexMethods() {
|
|
257
|
+
return Object.entries(FeatureComplexityAnalyzer.FEATURE_COMPLEXITIES)
|
|
258
|
+
.filter(([_, complexity]) => complexity.requiresMacro)
|
|
259
|
+
.map(([method, _]) => method);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get statistics about feature complexity
|
|
263
|
+
*/
|
|
264
|
+
static getComplexityStats() {
|
|
265
|
+
const total = Object.keys(FeatureComplexityAnalyzer.FEATURE_COMPLEXITIES).length;
|
|
266
|
+
const requireMacro = FeatureComplexityAnalyzer.getComplexMethods().length;
|
|
267
|
+
const directCOM = total - requireMacro;
|
|
268
|
+
return {
|
|
269
|
+
total,
|
|
270
|
+
requireMacro,
|
|
271
|
+
directCOM,
|
|
272
|
+
percentage: (requireMacro / total) * 100,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Log complexity analysis for debugging
|
|
277
|
+
*/
|
|
278
|
+
static logAnalysis(methodName, params) {
|
|
279
|
+
const strategy = FeatureComplexityAnalyzer.determineStrategy(methodName, params);
|
|
280
|
+
const paramAnalysis = FeatureComplexityAnalyzer.analyzeParameters(params);
|
|
281
|
+
logger.info('Feature complexity analysis', {
|
|
282
|
+
method: methodName,
|
|
283
|
+
strategy: strategy.strategy,
|
|
284
|
+
confidence: strategy.confidence,
|
|
285
|
+
parameterCount: paramAnalysis.count,
|
|
286
|
+
complexity: paramAnalysis.complexity,
|
|
287
|
+
reason: strategy.reason,
|
|
288
|
+
estimatedSuccessRate: strategy.estimatedSuccessRate,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Helper function to determine if direct COM should be attempted
|
|
294
|
+
*/
|
|
295
|
+
export function shouldAttemptDirectCOM(methodName, params) {
|
|
296
|
+
const strategy = FeatureComplexityAnalyzer.determineStrategy(methodName, params);
|
|
297
|
+
return strategy.strategy === 'direct-com' || strategy.strategy === 'hybrid';
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Helper function to determine if macro fallback should be used
|
|
301
|
+
*/
|
|
302
|
+
export function shouldUseMacroFallback(methodName, params) {
|
|
303
|
+
const strategy = FeatureComplexityAnalyzer.determineStrategy(methodName, params);
|
|
304
|
+
return strategy.strategy === 'vba-macro';
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Helper function to get recommended approach
|
|
308
|
+
*/
|
|
309
|
+
export function getRecommendedApproach(methodName, params) {
|
|
310
|
+
const strategy = FeatureComplexityAnalyzer.determineStrategy(methodName, params);
|
|
311
|
+
switch (strategy.strategy) {
|
|
312
|
+
case 'direct-com':
|
|
313
|
+
return 'Use direct COM call';
|
|
314
|
+
case 'vba-macro':
|
|
315
|
+
return 'Use VBA macro generation';
|
|
316
|
+
case 'hybrid':
|
|
317
|
+
return 'Try direct COM first, fallback to VBA macro on failure';
|
|
318
|
+
default:
|
|
319
|
+
return 'Unknown strategy';
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=feature-complexity-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-complexity-analyzer.js","sourceRoot":"","sources":["../../src/adapters/feature-complexity-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAyB5C;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IAC5B,MAAM,CAAU,mBAAmB,GAAG,EAAE,CAAC,CAAC,0CAA0C;IACpF,MAAM,CAAU,gBAAgB,GAAG,EAAE,CAAC,CAAC,uCAAuC;IAEtF;;;OAGG;IACK,MAAM,CAAU,oBAAoB,GAAsC;QAChF,2CAA2C;QAC3C,qBAAqB;QACrB,2CAA2C;QAC3C,gBAAgB,EAAE;YAChB,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC;YACxD,iBAAiB,EAAE,mBAAmB;SACvC;QACD,iBAAiB,EAAE;YACjB,MAAM,EAAE,mBAAmB;YAC3B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC;YACvE,iBAAiB,EAAE,mBAAmB;SACvC;QACD,iBAAiB,EAAE;YACjB,MAAM,EAAE,mBAAmB;YAC3B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC;SACzF;QAED,2CAA2C;QAC3C,mBAAmB;QACnB,2CAA2C;QAC3C,cAAc,EAAE;YACd,MAAM,EAAE,gBAAgB;YACxB,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,KAAK;YACpB,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;SAC3C;QACD,eAAe,EAAE;YACf,MAAM,EAAE,iBAAiB;YACzB,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,KAAK,EAAE,qBAAqB;YAC3C,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;SAC1D;QAED,2CAA2C;QAC3C,iBAAiB;QACjB,2CAA2C;QAC3C,qBAAqB,EAAE;YACrB,MAAM,EAAE,uBAAuB;YAC/B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,KAAK;YACpB,kBAAkB,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;SACpD;QACD,sBAAsB,EAAE;YACtB,MAAM,EAAE,wBAAwB;YAChC,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;SACjF;QAED,2CAA2C;QAC3C,gBAAgB;QAChB,2CAA2C;QAC3C,oBAAoB,EAAE;YACpB,MAAM,EAAE,sBAAsB;YAC9B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,KAAK;YACpB,kBAAkB,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;SAC3C;QACD,qBAAqB,EAAE;YACrB,MAAM,EAAE,uBAAuB;YAC/B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC;SACzE;QAED,2CAA2C;QAC3C,mBAAmB;QACnB,2CAA2C;QAC3C,qBAAqB,EAAE;YACrB,MAAM,EAAE,uBAAuB;YAC/B,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;SAC7F;QACD,sBAAsB,EAAE;YACtB,MAAM,EAAE,wBAAwB;YAChC,cAAc,EAAE,EAAE;YAClB,aAAa,EAAE,IAAI;YACnB,kBAAkB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;SAC/C;QAED,2CAA2C;QAC3C,wCAAwC;QACxC,2CAA2C;QAC3C,UAAU,EAAE;YACV,MAAM,EAAE,YAAY;YACpB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;SACzD;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,cAAc;YACtB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC;SAC9C;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,cAAc;YACtB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,kBAAkB,EAAE,CAAC,MAAM,CAAC;SAC7B;KACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAA2B;QAKlD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QAE5G,OAAO;YACL,KAAK;YACL,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACxE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;SAC/E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAkB,EAAE,UAA+B;QAC1E,MAAM,UAAU,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC9E,MAAM,aAAa,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE9E,6DAA6D;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,4BAA4B,CAAC,CAAC;YACvE,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,YAAY;gBACtB,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,wCAAwC;gBAChD,oBAAoB,EAAE,GAAG;aAC1B,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,IAAI,UAAU,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,GAAG,yBAAyB,CAAC,mBAAmB,EAAE,CAAC;YACpG,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,WAAW;gBACrB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,cAAc,UAAU,CAAC,cAAc,uBAAuB,yBAAyB,CAAC,mBAAmB,GAAG;gBACtH,oBAAoB,EAAE,IAAI;aAC3B,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,aAAa,CAAC,KAAK,GAAG,yBAAyB,CAAC,gBAAgB,EAAE,CAAC;YACrE,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,qDAAqD;gBACnF,oBAAoB,EAAE,IAAI;aAC3B,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,yBAAyB,aAAa,CAAC,KAAK,aAAa;YACjE,oBAAoB,EAAE,IAAI;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,UAAkB;QACrC,MAAM,UAAU,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC9E,OAAO,UAAU,EAAE,aAAa,IAAI,KAAK,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAkB;QACzC,MAAM,UAAU,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC9E,OAAO,UAAU,EAAE,cAAc,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAkB;QAC7C,MAAM,UAAU,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC9E,OAAO,UAAU,EAAE,kBAAkB,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAA2B;QACjD,qCAAqC;QACrC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,UAAU,EAAE,CAAC;YACb,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACrD,UAAU,IAAI,CAAC,CAAC;YAChB,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,UAAU,IAAI,CAAC,CAAC;YAChB,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,UAAU,IAAI,CAAC,CAAC;YAChB,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,EAAE,CAAC;YACb,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YAC3D,UAAU,EAAE,CAAC;YACb,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QAED,+BAA+B;QAC/B,UAAU,IAAI,CAAC,CAAC,CAAC,wBAAwB;QAEzC,MAAM,QAAQ,GACZ,UAAU,GAAG,yBAAyB,CAAC,mBAAmB;YACxD,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,UAAU,GAAG,yBAAyB,CAAC,gBAAgB;gBACvD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,YAAY,CAAC;QAErB,OAAO;YACL,MAAM,EAAE,mBAAmB;YAC3B,QAAQ;YACR,UAAU,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAClD,MAAM,EAAE,kBAAkB,UAAU,0BAA0B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC1F,oBAAoB,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;SAC5D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,oBAAoB,CAAC;aAClE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;aACrD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB;QAMvB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC;QACjF,MAAM,YAAY,GAAG,yBAAyB,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;QAC1E,MAAM,SAAS,GAAG,KAAK,GAAG,YAAY,CAAC;QAEvC,OAAO;YACL,KAAK;YACL,YAAY;YACZ,SAAS;YACT,UAAU,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,GAAG;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,UAAkB,EAAE,MAA2B;QAChE,MAAM,QAAQ,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACzC,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,cAAc,EAAE,aAAa,CAAC,KAAK;YACnC,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;SACpD,CAAC,CAAC;IACL,CAAC;;AAGH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,MAA2B;IACpF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC,QAAQ,KAAK,YAAY,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,MAA2B;IACpF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC,QAAQ,KAAK,WAAW,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,MAA2B;IACpF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEjF,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,YAAY;YACf,OAAO,qBAAqB,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,0BAA0B,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,wDAAwD,CAAC;QAClE;YACE,OAAO,kBAAkB,CAAC;IAC9B,CAAC;AACH,CAAC"}
|