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.
Files changed (243) hide show
  1. package/CHANGELOG.md +175 -98
  2. package/LICENSE +20 -20
  3. package/README.md +195 -423
  4. package/dist/adapters/circuit-breaker.d.ts +84 -0
  5. package/dist/adapters/circuit-breaker.d.ts.map +1 -0
  6. package/dist/adapters/circuit-breaker.js +228 -0
  7. package/dist/adapters/circuit-breaker.js.map +1 -0
  8. package/dist/adapters/connection-pool.d.ts +83 -0
  9. package/dist/adapters/connection-pool.d.ts.map +1 -0
  10. package/dist/adapters/connection-pool.js +282 -0
  11. package/dist/adapters/connection-pool.js.map +1 -0
  12. package/dist/adapters/edge-adapter.d.ts +43 -0
  13. package/dist/adapters/edge-adapter.d.ts.map +1 -0
  14. package/dist/adapters/edge-adapter.js +417 -0
  15. package/dist/adapters/edge-adapter.js.map +1 -0
  16. package/dist/adapters/factory.d.ts +60 -0
  17. package/dist/adapters/factory.d.ts.map +1 -0
  18. package/dist/adapters/factory.js +212 -0
  19. package/dist/adapters/factory.js.map +1 -0
  20. package/dist/adapters/feature-complexity-analyzer.d.ts +102 -0
  21. package/dist/adapters/feature-complexity-analyzer.d.ts.map +1 -0
  22. package/dist/adapters/feature-complexity-analyzer.js +322 -0
  23. package/dist/adapters/feature-complexity-analyzer.js.map +1 -0
  24. package/dist/adapters/macro-generator.d.ts +30 -0
  25. package/dist/adapters/macro-generator.d.ts.map +1 -0
  26. package/dist/adapters/macro-generator.js +524 -0
  27. package/dist/adapters/macro-generator.js.map +1 -0
  28. package/dist/adapters/mock-solidworks-adapter.d.ts +92 -0
  29. package/dist/adapters/mock-solidworks-adapter.d.ts.map +1 -0
  30. package/dist/adapters/mock-solidworks-adapter.js +367 -0
  31. package/dist/adapters/mock-solidworks-adapter.js.map +1 -0
  32. package/dist/adapters/types.d.ts +376 -0
  33. package/dist/adapters/types.d.ts.map +1 -0
  34. package/dist/adapters/types.js +261 -0
  35. package/dist/adapters/types.js.map +1 -0
  36. package/dist/adapters/winax-adapter-enhanced.d.ts +55 -0
  37. package/dist/adapters/winax-adapter-enhanced.d.ts.map +1 -0
  38. package/dist/adapters/winax-adapter-enhanced.js +601 -0
  39. package/dist/adapters/winax-adapter-enhanced.js.map +1 -0
  40. package/dist/adapters/winax-adapter.d.ts +55 -0
  41. package/dist/adapters/winax-adapter.d.ts.map +1 -0
  42. package/dist/adapters/winax-adapter.js +667 -0
  43. package/dist/adapters/winax-adapter.js.map +1 -0
  44. package/dist/api/stainless-api.d.ts +29 -0
  45. package/dist/api/stainless-api.d.ts.map +1 -0
  46. package/dist/api/stainless-api.js +408 -0
  47. package/dist/api/stainless-api.js.map +1 -0
  48. package/dist/cache/manager.d.ts.map +1 -1
  49. package/dist/cache/manager.js +4 -3
  50. package/dist/cache/manager.js.map +1 -1
  51. package/dist/core/interfaces/core-abstractions.d.ts.map +1 -1
  52. package/dist/core/interfaces/core-abstractions.js.map +1 -1
  53. package/dist/db/connection.js +4 -4
  54. package/dist/db/connection.js.map +1 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +86 -79
  57. package/dist/index.js.map +1 -1
  58. package/dist/knowledge/chromadb.d.ts.map +1 -1
  59. package/dist/knowledge/chromadb.js +5 -3
  60. package/dist/knowledge/chromadb.js.map +1 -1
  61. package/dist/macro/recorder.d.ts +1 -1
  62. package/dist/macro/recorder.d.ts.map +1 -1
  63. package/dist/macro/recorder.js +10 -10
  64. package/dist/macro/recorder.js.map +1 -1
  65. package/dist/resources/base.js +10 -10
  66. package/dist/resources/base.js.map +1 -1
  67. package/dist/resources/design-table.d.ts +10 -12
  68. package/dist/resources/design-table.d.ts.map +1 -1
  69. package/dist/resources/design-table.js +42 -39
  70. package/dist/resources/design-table.js.map +1 -1
  71. package/dist/resources/pdm.d.ts +44 -45
  72. package/dist/resources/pdm.d.ts.map +1 -1
  73. package/dist/resources/pdm.js +118 -79
  74. package/dist/resources/pdm.js.map +1 -1
  75. package/dist/resources/registry.d.ts +1 -1
  76. package/dist/resources/registry.d.ts.map +1 -1
  77. package/dist/resources/registry.js +1 -1
  78. package/dist/shared/constants/solidworks-constants.d.ts.map +1 -1
  79. package/dist/shared/constants/solidworks-constants.js +9 -9
  80. package/dist/shared/constants/solidworks-constants.js.map +1 -1
  81. package/dist/solidworks/api.d.ts +8 -6
  82. package/dist/solidworks/api.d.ts.map +1 -1
  83. package/dist/solidworks/api.js +614 -188
  84. package/dist/solidworks/api.js.map +1 -1
  85. package/dist/state/store.d.ts +1 -1
  86. package/dist/state/store.d.ts.map +1 -1
  87. package/dist/state/store.js +14 -14
  88. package/dist/state/store.js.map +1 -1
  89. package/dist/tools/analysis.d.ts +12 -2
  90. package/dist/tools/analysis.d.ts.map +1 -1
  91. package/dist/tools/analysis.js +141 -31
  92. package/dist/tools/analysis.js.map +1 -1
  93. package/dist/tools/diagnostics.d.ts +1 -1
  94. package/dist/tools/diagnostics.d.ts.map +1 -1
  95. package/dist/tools/diagnostics.js +2 -2
  96. package/dist/tools/diagnostics.js.map +1 -1
  97. package/dist/tools/drawing.d.ts +2 -2
  98. package/dist/tools/drawing.d.ts.map +1 -1
  99. package/dist/tools/drawing.js +94 -10
  100. package/dist/tools/drawing.js.map +1 -1
  101. package/dist/tools/enhanced-drawing.d.ts +1 -1
  102. package/dist/tools/enhanced-drawing.d.ts.map +1 -1
  103. package/dist/tools/enhanced-drawing.js +10 -13
  104. package/dist/tools/enhanced-drawing.js.map +1 -1
  105. package/dist/tools/export.d.ts +1 -1
  106. package/dist/tools/export.d.ts.map +1 -1
  107. package/dist/tools/export.js +88 -14
  108. package/dist/tools/export.js.map +1 -1
  109. package/dist/tools/extrusion-helper.d.ts +15 -0
  110. package/dist/tools/extrusion-helper.d.ts.map +1 -0
  111. package/dist/tools/extrusion-helper.js +61 -0
  112. package/dist/tools/extrusion-helper.js.map +1 -0
  113. package/dist/tools/macro-security.d.ts +2 -2
  114. package/dist/tools/macro-security.d.ts.map +1 -1
  115. package/dist/tools/macro-security.js +2 -2
  116. package/dist/tools/macro-security.js.map +1 -1
  117. package/dist/tools/modeling.d.ts +2 -2
  118. package/dist/tools/modeling.d.ts.map +1 -1
  119. package/dist/tools/modeling.js +6 -6
  120. package/dist/tools/modeling.js.map +1 -1
  121. package/dist/tools/native-macro.d.ts +1 -1
  122. package/dist/tools/native-macro.d.ts.map +1 -1
  123. package/dist/tools/native-macro.js +246 -239
  124. package/dist/tools/native-macro.js.map +1 -1
  125. package/dist/tools/sketch.d.ts +28 -28
  126. package/dist/tools/sketch.d.ts.map +1 -1
  127. package/dist/tools/sketch.js +202 -136
  128. package/dist/tools/sketch.js.map +1 -1
  129. package/dist/tools/template-manager.d.ts +5 -5
  130. package/dist/tools/template-manager.d.ts.map +1 -1
  131. package/dist/tools/template-manager.js +66 -65
  132. package/dist/tools/template-manager.js.map +1 -1
  133. package/dist/tools/vba-advanced.d.ts +10 -10
  134. package/dist/tools/vba-advanced.d.ts.map +1 -1
  135. package/dist/tools/vba-advanced.js +791 -708
  136. package/dist/tools/vba-advanced.js.map +1 -1
  137. package/dist/tools/vba-assembly.d.ts +10 -10
  138. package/dist/tools/vba-assembly.d.ts.map +1 -1
  139. package/dist/tools/vba-assembly.js +562 -500
  140. package/dist/tools/vba-assembly.js.map +1 -1
  141. package/dist/tools/vba-drawing.d.ts +12 -12
  142. package/dist/tools/vba-drawing.d.ts.map +1 -1
  143. package/dist/tools/vba-drawing.js +681 -572
  144. package/dist/tools/vba-drawing.js.map +1 -1
  145. package/dist/tools/vba-file-management.d.ts +12 -12
  146. package/dist/tools/vba-file-management.d.ts.map +1 -1
  147. package/dist/tools/vba-file-management.js +662 -589
  148. package/dist/tools/vba-file-management.js.map +1 -1
  149. package/dist/tools/vba-part.d.ts +10 -10
  150. package/dist/tools/vba-part.d.ts.map +1 -1
  151. package/dist/tools/vba-part.js +484 -426
  152. package/dist/tools/vba-part.js.map +1 -1
  153. package/dist/tools/vba.d.ts +361 -361
  154. package/dist/tools/vba.d.ts.map +1 -1
  155. package/dist/tools/vba.js +67 -81
  156. package/dist/tools/vba.js.map +1 -1
  157. package/dist/utils/config.js +2 -2
  158. package/dist/utils/config.js.map +1 -1
  159. package/dist/utils/environment.d.ts +243 -0
  160. package/dist/utils/environment.d.ts.map +1 -0
  161. package/dist/utils/environment.js +207 -0
  162. package/dist/utils/environment.js.map +1 -0
  163. package/dist/utils/logger.d.ts.map +1 -1
  164. package/dist/utils/logger.js +6 -6
  165. package/dist/utils/logger.js.map +1 -1
  166. package/dist/utils/solidworks-config.d.ts +39 -0
  167. package/dist/utils/solidworks-config.d.ts.map +1 -0
  168. package/dist/utils/solidworks-config.js +156 -0
  169. package/dist/utils/solidworks-config.js.map +1 -0
  170. package/package.json +84 -84
  171. package/scripts/setup.js +70 -70
  172. package/dist/application/services/command-bus.d.ts +0 -39
  173. package/dist/application/services/command-bus.d.ts.map +0 -1
  174. package/dist/application/services/command-bus.js +0 -88
  175. package/dist/application/services/command-bus.js.map +0 -1
  176. package/dist/application/services/event-bus.d.ts +0 -31
  177. package/dist/application/services/event-bus.d.ts.map +0 -1
  178. package/dist/application/services/event-bus.js +0 -83
  179. package/dist/application/services/event-bus.js.map +0 -1
  180. package/dist/application/services/query-bus.d.ts +0 -30
  181. package/dist/application/services/query-bus.d.ts.map +0 -1
  182. package/dist/application/services/query-bus.js +0 -59
  183. package/dist/application/services/query-bus.js.map +0 -1
  184. package/dist/application/services/tool-registry.d.ts +0 -53
  185. package/dist/application/services/tool-registry.d.ts.map +0 -1
  186. package/dist/application/services/tool-registry.js +0 -81
  187. package/dist/application/services/tool-registry.js.map +0 -1
  188. package/dist/application/use-cases/analysis/index.d.ts +0 -13
  189. package/dist/application/use-cases/analysis/index.d.ts.map +0 -1
  190. package/dist/application/use-cases/analysis/index.js +0 -17
  191. package/dist/application/use-cases/analysis/index.js.map +0 -1
  192. package/dist/application/use-cases/drawing/index.d.ts +0 -13
  193. package/dist/application/use-cases/drawing/index.d.ts.map +0 -1
  194. package/dist/application/use-cases/drawing/index.js +0 -17
  195. package/dist/application/use-cases/drawing/index.js.map +0 -1
  196. package/dist/application/use-cases/export/index.d.ts +0 -13
  197. package/dist/application/use-cases/export/index.d.ts.map +0 -1
  198. package/dist/application/use-cases/export/index.js +0 -17
  199. package/dist/application/use-cases/export/index.js.map +0 -1
  200. package/dist/application/use-cases/macro/index.d.ts +0 -13
  201. package/dist/application/use-cases/macro/index.d.ts.map +0 -1
  202. package/dist/application/use-cases/macro/index.js +0 -17
  203. package/dist/application/use-cases/macro/index.js.map +0 -1
  204. package/dist/application/use-cases/modeling/index.d.ts +0 -56
  205. package/dist/application/use-cases/modeling/index.d.ts.map +0 -1
  206. package/dist/application/use-cases/modeling/index.js +0 -385
  207. package/dist/application/use-cases/modeling/index.js.map +0 -1
  208. package/dist/index.refactored.d.ts +0 -7
  209. package/dist/index.refactored.d.ts.map +0 -1
  210. package/dist/index.refactored.js +0 -254
  211. package/dist/index.refactored.js.map +0 -1
  212. package/dist/infrastructure/config/configuration-manager.d.ts +0 -381
  213. package/dist/infrastructure/config/configuration-manager.d.ts.map +0 -1
  214. package/dist/infrastructure/config/configuration-manager.js +0 -566
  215. package/dist/infrastructure/config/configuration-manager.js.map +0 -1
  216. package/dist/infrastructure/container/service-locator.d.ts +0 -14
  217. package/dist/infrastructure/container/service-locator.d.ts.map +0 -1
  218. package/dist/infrastructure/container/service-locator.js +0 -38
  219. package/dist/infrastructure/container/service-locator.js.map +0 -1
  220. package/dist/infrastructure/logging/logger.d.ts +0 -24
  221. package/dist/infrastructure/logging/logger.d.ts.map +0 -1
  222. package/dist/infrastructure/logging/logger.js +0 -65
  223. package/dist/infrastructure/logging/logger.js.map +0 -1
  224. package/dist/infrastructure/solidworks/solidworks-adapter.d.ts +0 -43
  225. package/dist/infrastructure/solidworks/solidworks-adapter.d.ts.map +0 -1
  226. package/dist/infrastructure/solidworks/solidworks-adapter.js +0 -527
  227. package/dist/infrastructure/solidworks/solidworks-adapter.js.map +0 -1
  228. package/dist/presentation/mcp/request-handler.d.ts +0 -41
  229. package/dist/presentation/mcp/request-handler.d.ts.map +0 -1
  230. package/dist/presentation/mcp/request-handler.js +0 -100
  231. package/dist/presentation/mcp/request-handler.js.map +0 -1
  232. package/dist/presentation/transformers/error-transformer.d.ts +0 -16
  233. package/dist/presentation/transformers/error-transformer.d.ts.map +0 -1
  234. package/dist/presentation/transformers/error-transformer.js +0 -44
  235. package/dist/presentation/transformers/error-transformer.js.map +0 -1
  236. package/dist/presentation/transformers/response-transformer.d.ts +0 -24
  237. package/dist/presentation/transformers/response-transformer.d.ts.map +0 -1
  238. package/dist/presentation/transformers/response-transformer.js +0 -102
  239. package/dist/presentation/transformers/response-transformer.js.map +0 -1
  240. package/dist/tools/drawing-analysis.d.ts +0 -9
  241. package/dist/tools/drawing-analysis.d.ts.map +0 -1
  242. package/dist/tools/drawing-analysis.js +0 -239
  243. package/dist/tools/drawing-analysis.js.map +0 -1
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Circuit Breaker Adapter for SolidWorks MCP Server
3
+ *
4
+ * Wraps any SolidWorks adapter with circuit breaker pattern to:
5
+ * - Prevent cascading failures
6
+ * - Provide automatic recovery
7
+ * - Reduce load on failing systems
8
+ */
9
+ import type { SolidWorksFeature, SolidWorksModel } from '../solidworks/types.js';
10
+ import type { AdapterHealth, AdapterResult, Command, ExtrusionParameters, ISolidWorksAdapter, LoftParameters, MassProperties, RevolveParameters, SweepParameters } from './types.js';
11
+ export declare enum CircuitState {
12
+ CLOSED = "CLOSED",
13
+ OPEN = "OPEN",
14
+ HALF_OPEN = "HALF_OPEN"
15
+ }
16
+ export declare class CircuitBreakerAdapter implements ISolidWorksAdapter {
17
+ private wrappedAdapter;
18
+ private threshold;
19
+ private timeout;
20
+ private halfOpenLimit;
21
+ private state;
22
+ private failures;
23
+ private successes;
24
+ private lastFailureTime?;
25
+ private nextAttemptTime?;
26
+ private halfOpenRequests;
27
+ constructor(wrappedAdapter: ISolidWorksAdapter, threshold?: number, timeout?: number, // 1 minute
28
+ halfOpenLimit?: number);
29
+ /**
30
+ * Execute operation with circuit breaker protection
31
+ */
32
+ private executeWithBreaker;
33
+ /**
34
+ * Handle successful operation
35
+ */
36
+ private onSuccess;
37
+ /**
38
+ * Handle failed operation
39
+ */
40
+ private onFailure;
41
+ /**
42
+ * Check if we should attempt to reset the circuit
43
+ */
44
+ private shouldAttemptReset;
45
+ /**
46
+ * Get circuit breaker statistics
47
+ */
48
+ getStatistics(): {
49
+ state: CircuitState;
50
+ failures: number;
51
+ successes: number;
52
+ lastFailureTime?: Date;
53
+ nextAttemptTime?: Date;
54
+ };
55
+ /**
56
+ * Manually reset the circuit breaker
57
+ */
58
+ reset(): void;
59
+ connect(): Promise<void>;
60
+ disconnect(): Promise<void>;
61
+ isConnected(): boolean;
62
+ healthCheck(): Promise<AdapterHealth>;
63
+ execute<T>(command: Command): Promise<AdapterResult<T>>;
64
+ executeRaw(method: string, args: any[]): Promise<any>;
65
+ openModel(filePath: string): Promise<SolidWorksModel>;
66
+ closeModel(save?: boolean): Promise<void>;
67
+ createPart(): Promise<SolidWorksModel>;
68
+ createAssembly(): Promise<SolidWorksModel>;
69
+ createDrawing(): Promise<SolidWorksModel>;
70
+ createExtrusion(params: ExtrusionParameters): Promise<SolidWorksFeature>;
71
+ createRevolve(params: RevolveParameters): Promise<SolidWorksFeature>;
72
+ createSweep(params: SweepParameters): Promise<SolidWorksFeature>;
73
+ createLoft(params: LoftParameters): Promise<SolidWorksFeature>;
74
+ createSketch(plane: string): Promise<string>;
75
+ addLine(x1: number, y1: number, x2: number, y2: number): Promise<void>;
76
+ addCircle(centerX: number, centerY: number, radius: number): Promise<void>;
77
+ addRectangle(x1: number, y1: number, x2: number, y2: number): Promise<void>;
78
+ exitSketch(): Promise<void>;
79
+ getMassProperties(): Promise<MassProperties>;
80
+ exportFile(filePath: string, format: string): Promise<void>;
81
+ getDimension(name: string): Promise<number>;
82
+ setDimension(name: string, value: number): Promise<void>;
83
+ }
84
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/adapters/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Circuit Breaker Adapter for SolidWorks MCP Server
3
+ *
4
+ * Wraps any SolidWorks adapter with circuit breaker pattern to:
5
+ * - Prevent cascading failures
6
+ * - Provide automatic recovery
7
+ * - Reduce load on failing systems
8
+ */
9
+ import { logger } from '../utils/logger.js';
10
+ export var CircuitState;
11
+ (function (CircuitState) {
12
+ CircuitState["CLOSED"] = "CLOSED";
13
+ CircuitState["OPEN"] = "OPEN";
14
+ CircuitState["HALF_OPEN"] = "HALF_OPEN";
15
+ })(CircuitState || (CircuitState = {}));
16
+ export class CircuitBreakerAdapter {
17
+ wrappedAdapter;
18
+ threshold;
19
+ timeout;
20
+ halfOpenLimit;
21
+ state = CircuitState.CLOSED;
22
+ failures = 0;
23
+ successes = 0;
24
+ lastFailureTime;
25
+ nextAttemptTime;
26
+ halfOpenRequests = 0;
27
+ constructor(wrappedAdapter, threshold = 5, timeout = 60000, // 1 minute
28
+ halfOpenLimit = 3) {
29
+ this.wrappedAdapter = wrappedAdapter;
30
+ this.threshold = threshold;
31
+ this.timeout = timeout;
32
+ this.halfOpenLimit = halfOpenLimit;
33
+ }
34
+ /**
35
+ * Execute operation with circuit breaker protection
36
+ */
37
+ async executeWithBreaker(operation, operationName) {
38
+ // Check circuit state
39
+ if (this.state === CircuitState.OPEN) {
40
+ if (this.shouldAttemptReset()) {
41
+ this.state = CircuitState.HALF_OPEN;
42
+ this.halfOpenRequests = 0;
43
+ logger.info(`Circuit breaker entering HALF_OPEN state for ${operationName}`);
44
+ }
45
+ else {
46
+ const waitTime = this.nextAttemptTime ? Math.max(0, this.nextAttemptTime.getTime() - Date.now()) : this.timeout;
47
+ throw new Error(`Circuit breaker is OPEN for ${operationName}. Retry in ${Math.round(waitTime / 1000)}s`);
48
+ }
49
+ }
50
+ // Check half-open limit
51
+ if (this.state === CircuitState.HALF_OPEN) {
52
+ if (this.halfOpenRequests >= this.halfOpenLimit) {
53
+ throw new Error(`Circuit breaker HALF_OPEN limit reached for ${operationName}. Waiting for recovery.`);
54
+ }
55
+ this.halfOpenRequests++;
56
+ }
57
+ try {
58
+ // Execute the operation
59
+ const result = await operation();
60
+ // Record success
61
+ this.onSuccess();
62
+ return result;
63
+ }
64
+ catch (error) {
65
+ // Record failure
66
+ this.onFailure();
67
+ // Log the error
68
+ logger.error(`Circuit breaker caught error in ${operationName}:`, error);
69
+ throw error;
70
+ }
71
+ }
72
+ /**
73
+ * Handle successful operation
74
+ */
75
+ onSuccess() {
76
+ this.failures = 0;
77
+ this.successes++;
78
+ if (this.state === CircuitState.HALF_OPEN) {
79
+ if (this.halfOpenRequests >= this.halfOpenLimit) {
80
+ // Enough successful requests, close the circuit
81
+ this.state = CircuitState.CLOSED;
82
+ logger.info('Circuit breaker closed after successful recovery');
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * Handle failed operation
88
+ */
89
+ onFailure() {
90
+ this.failures++;
91
+ this.lastFailureTime = new Date();
92
+ if (this.failures >= this.threshold) {
93
+ this.state = CircuitState.OPEN;
94
+ this.nextAttemptTime = new Date(Date.now() + this.timeout);
95
+ logger.warn(`Circuit breaker opened after ${this.failures} failures. Will retry at ${this.nextAttemptTime.toISOString()}`);
96
+ }
97
+ if (this.state === CircuitState.HALF_OPEN) {
98
+ // Failed in half-open state, reopen immediately
99
+ this.state = CircuitState.OPEN;
100
+ this.nextAttemptTime = new Date(Date.now() + this.timeout);
101
+ logger.warn('Circuit breaker reopened due to failure in HALF_OPEN state');
102
+ }
103
+ }
104
+ /**
105
+ * Check if we should attempt to reset the circuit
106
+ */
107
+ shouldAttemptReset() {
108
+ if (!this.nextAttemptTime)
109
+ return true;
110
+ return Date.now() >= this.nextAttemptTime.getTime();
111
+ }
112
+ /**
113
+ * Get circuit breaker statistics
114
+ */
115
+ getStatistics() {
116
+ return {
117
+ state: this.state,
118
+ failures: this.failures,
119
+ successes: this.successes,
120
+ lastFailureTime: this.lastFailureTime,
121
+ nextAttemptTime: this.nextAttemptTime,
122
+ };
123
+ }
124
+ /**
125
+ * Manually reset the circuit breaker
126
+ */
127
+ reset() {
128
+ this.state = CircuitState.CLOSED;
129
+ this.failures = 0;
130
+ this.halfOpenRequests = 0;
131
+ this.lastFailureTime = undefined;
132
+ this.nextAttemptTime = undefined;
133
+ logger.info('Circuit breaker manually reset');
134
+ }
135
+ // Implement ISolidWorksAdapter interface
136
+ async connect() {
137
+ return this.executeWithBreaker(() => this.wrappedAdapter.connect(), 'connect');
138
+ }
139
+ async disconnect() {
140
+ return this.executeWithBreaker(() => this.wrappedAdapter.disconnect(), 'disconnect');
141
+ }
142
+ isConnected() {
143
+ // This doesn't need circuit breaker as it's a simple check
144
+ return this.wrappedAdapter.isConnected();
145
+ }
146
+ async healthCheck() {
147
+ try {
148
+ const health = await this.executeWithBreaker(() => this.wrappedAdapter.healthCheck(), 'healthCheck');
149
+ // Add circuit breaker state to health
150
+ return {
151
+ ...health,
152
+ connectionStatus: this.state === CircuitState.OPEN ? 'error' : health.connectionStatus,
153
+ };
154
+ }
155
+ catch (_error) {
156
+ // Return unhealthy status if circuit is open
157
+ return {
158
+ healthy: false,
159
+ lastCheck: new Date(),
160
+ errorCount: this.failures,
161
+ successCount: this.successes,
162
+ averageResponseTime: 0,
163
+ connectionStatus: 'error',
164
+ };
165
+ }
166
+ }
167
+ async execute(command) {
168
+ return this.executeWithBreaker(() => this.wrappedAdapter.execute(command), `execute:${command.name}`);
169
+ }
170
+ async executeRaw(method, args) {
171
+ return this.executeWithBreaker(() => this.wrappedAdapter.executeRaw(method, args), `executeRaw:${method}`);
172
+ }
173
+ async openModel(filePath) {
174
+ return this.executeWithBreaker(() => this.wrappedAdapter.openModel(filePath), 'openModel');
175
+ }
176
+ async closeModel(save) {
177
+ return this.executeWithBreaker(() => this.wrappedAdapter.closeModel(save), 'closeModel');
178
+ }
179
+ async createPart() {
180
+ return this.executeWithBreaker(() => this.wrappedAdapter.createPart(), 'createPart');
181
+ }
182
+ async createAssembly() {
183
+ return this.executeWithBreaker(() => this.wrappedAdapter.createAssembly(), 'createAssembly');
184
+ }
185
+ async createDrawing() {
186
+ return this.executeWithBreaker(() => this.wrappedAdapter.createDrawing(), 'createDrawing');
187
+ }
188
+ async createExtrusion(params) {
189
+ return this.executeWithBreaker(() => this.wrappedAdapter.createExtrusion(params), 'createExtrusion');
190
+ }
191
+ async createRevolve(params) {
192
+ return this.executeWithBreaker(() => this.wrappedAdapter.createRevolve(params), 'createRevolve');
193
+ }
194
+ async createSweep(params) {
195
+ return this.executeWithBreaker(() => this.wrappedAdapter.createSweep(params), 'createSweep');
196
+ }
197
+ async createLoft(params) {
198
+ return this.executeWithBreaker(() => this.wrappedAdapter.createLoft(params), 'createLoft');
199
+ }
200
+ async createSketch(plane) {
201
+ return this.executeWithBreaker(() => this.wrappedAdapter.createSketch(plane), 'createSketch');
202
+ }
203
+ async addLine(x1, y1, x2, y2) {
204
+ return this.executeWithBreaker(() => this.wrappedAdapter.addLine(x1, y1, x2, y2), 'addLine');
205
+ }
206
+ async addCircle(centerX, centerY, radius) {
207
+ return this.executeWithBreaker(() => this.wrappedAdapter.addCircle(centerX, centerY, radius), 'addCircle');
208
+ }
209
+ async addRectangle(x1, y1, x2, y2) {
210
+ return this.executeWithBreaker(() => this.wrappedAdapter.addRectangle(x1, y1, x2, y2), 'addRectangle');
211
+ }
212
+ async exitSketch() {
213
+ return this.executeWithBreaker(() => this.wrappedAdapter.exitSketch(), 'exitSketch');
214
+ }
215
+ async getMassProperties() {
216
+ return this.executeWithBreaker(() => this.wrappedAdapter.getMassProperties(), 'getMassProperties');
217
+ }
218
+ async exportFile(filePath, format) {
219
+ return this.executeWithBreaker(() => this.wrappedAdapter.exportFile(filePath, format), 'exportFile');
220
+ }
221
+ async getDimension(name) {
222
+ return this.executeWithBreaker(() => this.wrappedAdapter.getDimension(name), 'getDimension');
223
+ }
224
+ async setDimension(name, value) {
225
+ return this.executeWithBreaker(() => this.wrappedAdapter.setDimension(name, value), 'setDimension');
226
+ }
227
+ }
228
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/adapters/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Connection Pool Adapter for SolidWorks MCP Server
3
+ *
4
+ * Manages multiple SolidWorks adapter connections for:
5
+ * - Improved performance through parallel operations
6
+ * - Load balancing across connections
7
+ * - Connection reuse and lifecycle management
8
+ */
9
+ import type { SolidWorksFeature, SolidWorksModel } from '../solidworks/types.js';
10
+ import type { AdapterHealth, AdapterResult, Command, ExtrusionParameters, ISolidWorksAdapter, LoftParameters, MassProperties, RevolveParameters, SweepParameters } from './types.js';
11
+ export declare class ConnectionPoolAdapter implements ISolidWorksAdapter {
12
+ private adapterFactory;
13
+ private poolSize;
14
+ private maxWaitTime;
15
+ private connections;
16
+ private waitingQueue;
17
+ private initialized;
18
+ constructor(adapterFactory: () => Promise<ISolidWorksAdapter>, poolSize?: number, maxWaitTime?: number);
19
+ /**
20
+ * Initialize the connection pool
21
+ */
22
+ initialize(): Promise<void>;
23
+ /**
24
+ * Create a new connection
25
+ */
26
+ private createConnection;
27
+ /**
28
+ * Acquire a connection from the pool
29
+ */
30
+ private acquireConnection;
31
+ /**
32
+ * Release a connection back to the pool
33
+ */
34
+ private releaseConnection;
35
+ /**
36
+ * Execute operation with a pooled connection
37
+ */
38
+ private executeWithPool;
39
+ /**
40
+ * Get pool statistics
41
+ */
42
+ getStatistics(): {
43
+ totalConnections: number;
44
+ availableConnections: number;
45
+ inUseConnections: number;
46
+ waitingRequests: number;
47
+ connectionStats: Array<{
48
+ id: string;
49
+ inUse: boolean;
50
+ useCount: number;
51
+ lastUsed: Date;
52
+ }>;
53
+ };
54
+ /**
55
+ * Destroy the connection pool
56
+ */
57
+ destroy(): Promise<void>;
58
+ connect(): Promise<void>;
59
+ disconnect(): Promise<void>;
60
+ isConnected(): boolean;
61
+ healthCheck(): Promise<AdapterHealth>;
62
+ execute<T>(command: Command): Promise<AdapterResult<T>>;
63
+ executeRaw(method: string, args: any[]): Promise<any>;
64
+ openModel(filePath: string): Promise<SolidWorksModel>;
65
+ closeModel(save?: boolean): Promise<void>;
66
+ createPart(): Promise<SolidWorksModel>;
67
+ createAssembly(): Promise<SolidWorksModel>;
68
+ createDrawing(): Promise<SolidWorksModel>;
69
+ createExtrusion(params: ExtrusionParameters): Promise<SolidWorksFeature>;
70
+ createRevolve(params: RevolveParameters): Promise<SolidWorksFeature>;
71
+ createSweep(params: SweepParameters): Promise<SolidWorksFeature>;
72
+ createLoft(params: LoftParameters): Promise<SolidWorksFeature>;
73
+ createSketch(plane: string): Promise<string>;
74
+ addLine(x1: number, y1: number, x2: number, y2: number): Promise<void>;
75
+ addCircle(centerX: number, centerY: number, radius: number): Promise<void>;
76
+ addRectangle(x1: number, y1: number, x2: number, y2: number): Promise<void>;
77
+ exitSketch(): Promise<void>;
78
+ getMassProperties(): Promise<MassProperties>;
79
+ exportFile(filePath: string, format: string): Promise<void>;
80
+ getDimension(name: string): Promise<number>;
81
+ setDimension(name: string, value: number): Promise<void>;
82
+ }
83
+ //# sourceMappingURL=connection-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-pool.d.ts","sourceRoot":"","sources":["../../src/adapters/connection-pool.ts"],"names":[],"mappings":"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"}