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,417 @@
1
+ /**
2
+ * Edge.js Adapter for SolidWorks COM Integration
3
+ *
4
+ * This adapter uses Edge.js to bridge Node.js with C# code,
5
+ * providing full access to SolidWorks COM API without the
6
+ * parameter limitations of direct COM bridges.
7
+ */
8
+ import { logger } from '../utils/logger.js';
9
+ export class EdgeJsAdapter {
10
+ executeCS;
11
+ connected = false;
12
+ isConnected() {
13
+ return this.connected;
14
+ }
15
+ constructor() {
16
+ this.initializeCSharpBridge();
17
+ }
18
+ initializeCSharpBridge() {
19
+ // Define C# code that will be compiled and executed
20
+ const _csharpCode = `
21
+ using System;
22
+ using System.Threading.Tasks;
23
+ using System.Dynamic;
24
+ using System.Collections.Generic;
25
+ using System.Runtime.InteropServices;
26
+
27
+ public class SolidWorksExecutor
28
+ {
29
+ private dynamic swApp;
30
+ private dynamic currentModel;
31
+
32
+ public async Task<object> Invoke(dynamic input)
33
+ {
34
+ try
35
+ {
36
+ string command = (string)input.command;
37
+ var parameters = (IDictionary<string, object>)input.parameters;
38
+
39
+ switch (command)
40
+ {
41
+ case "Connect":
42
+ return await ConnectToSolidWorks();
43
+
44
+ case "Disconnect":
45
+ return await DisconnectFromSolidWorks();
46
+
47
+ case "CreateExtrusion":
48
+ return await CreateExtrusion(parameters);
49
+
50
+ case "ExecuteMethod":
51
+ return await ExecuteMethod(parameters);
52
+
53
+ default:
54
+ throw new Exception($"Unknown command: {command}");
55
+ }
56
+ }
57
+ catch (Exception ex)
58
+ {
59
+ return new
60
+ {
61
+ success = false,
62
+ error = ex.Message,
63
+ stackTrace = ex.StackTrace
64
+ };
65
+ }
66
+ }
67
+
68
+ private async Task<object> ConnectToSolidWorks()
69
+ {
70
+ return await Task.Run(() =>
71
+ {
72
+ Type swType = Type.GetTypeFromProgID("SldWorks.Application");
73
+ swApp = Activator.CreateInstance(swType);
74
+ swApp.Visible = true;
75
+
76
+ return new
77
+ {
78
+ success = true,
79
+ message = "Connected to SolidWorks"
80
+ };
81
+ });
82
+ }
83
+
84
+ private async Task<object> DisconnectFromSolidWorks()
85
+ {
86
+ return await Task.Run(() =>
87
+ {
88
+ if (currentModel != null)
89
+ {
90
+ Marshal.ReleaseComObject(currentModel);
91
+ currentModel = null;
92
+ }
93
+
94
+ if (swApp != null)
95
+ {
96
+ Marshal.ReleaseComObject(swApp);
97
+ swApp = null;
98
+ }
99
+
100
+ GC.Collect();
101
+ GC.WaitForPendingFinalizers();
102
+
103
+ return new
104
+ {
105
+ success = true,
106
+ message = "Disconnected from SolidWorks"
107
+ };
108
+ });
109
+ }
110
+
111
+ private async Task<object> CreateExtrusion(IDictionary<string, object> parameters)
112
+ {
113
+ return await Task.Run(() =>
114
+ {
115
+ if (swApp == null || currentModel == null)
116
+ {
117
+ throw new Exception("Not connected to SolidWorks or no active model");
118
+ }
119
+
120
+ // Extract parameters with defaults
121
+ double depth = Convert.ToDouble(parameters.ContainsKey("depth") ? parameters["depth"] : 0.025);
122
+ bool reverseDir = Convert.ToBoolean(parameters.ContainsKey("reverse") ? parameters["reverse"] : false);
123
+ bool bothDirections = Convert.ToBoolean(parameters.ContainsKey("bothDirections") ? parameters["bothDirections"] : false);
124
+ double draftAngle = Convert.ToDouble(parameters.ContainsKey("draft") ? parameters["draft"] : 0);
125
+ int draftOutward = Convert.ToInt32(parameters.ContainsKey("draftOutward") ? parameters["draftOutward"] : 0);
126
+ int draftWhileExtruding = Convert.ToInt32(parameters.ContainsKey("draftWhileExtruding") ? parameters["draftWhileExtruding"] : 0);
127
+ double offsetDistance = Convert.ToDouble(parameters.ContainsKey("offsetDistance") ? parameters["offsetDistance"] : 0);
128
+ bool offsetReverse = Convert.ToBoolean(parameters.ContainsKey("offsetReverse") ? parameters["offsetReverse"] : false);
129
+ bool translateSurface = Convert.ToBoolean(parameters.ContainsKey("translateSurface") ? parameters["translateSurface"] : false);
130
+ bool merge = Convert.ToBoolean(parameters.ContainsKey("merge") ? parameters["merge"] : true);
131
+ bool flipSideToCut = Convert.ToBoolean(parameters.ContainsKey("flipSideToCut") ? parameters["flipSideToCut"] : false);
132
+
133
+ // Call SolidWorks FeatureExtrusion3 with all parameters
134
+ dynamic feature = currentModel.FeatureManager.FeatureExtrusion3(
135
+ true, // Sd (true for single direction)
136
+ reverseDir, // Flip
137
+ bothDirections, // Dir (both directions)
138
+ 0, // T1 (end condition: blind)
139
+ 0, // T2 (end condition for second direction)
140
+ depth, // D1 (depth)
141
+ 0.0, // D2 (depth for second direction)
142
+ false, // Dchk1 (draft while extruding, dir 1)
143
+ false, // Dchk2 (draft while extruding, dir 2)
144
+ draftAngle, // Dang1 (draft angle, dir 1)
145
+ 0.0, // Dang2 (draft angle, dir 2)
146
+ draftOutward, // OffsetReverse1 (draft outward)
147
+ 0, // OffsetReverse2
148
+ false, // TranslateSurface1
149
+ false, // TranslateSurface2
150
+ merge, // Merge
151
+ flipSideToCut, // FlipSideToCut (for cut extrude)
152
+ true, // Update
153
+ 0, // StartCondition
154
+ 0, // FlipStartOffset
155
+ false // SelectionManager
156
+ );
157
+
158
+ if (feature != null)
159
+ {
160
+ return new
161
+ {
162
+ success = true,
163
+ featureName = feature.Name,
164
+ featureType = feature.GetTypeName2()
165
+ };
166
+ }
167
+ else
168
+ {
169
+ throw new Exception("Failed to create extrusion feature");
170
+ }
171
+ });
172
+ }
173
+
174
+ private async Task<object> ExecuteMethod(IDictionary<string, object> parameters)
175
+ {
176
+ return await Task.Run(() =>
177
+ {
178
+ string objectPath = (string)parameters["objectPath"];
179
+ string methodName = (string)parameters["methodName"];
180
+ object[] args = parameters.ContainsKey("arguments") ?
181
+ (object[])parameters["arguments"] : new object[0];
182
+
183
+ // Navigate to the target object
184
+ dynamic targetObject = swApp;
185
+ if (!string.IsNullOrEmpty(objectPath) && objectPath != "Application")
186
+ {
187
+ if (objectPath == "ActiveDoc" || objectPath == "CurrentModel")
188
+ {
189
+ targetObject = currentModel;
190
+ }
191
+ else
192
+ {
193
+ string[] path = objectPath.Split('.');
194
+ foreach (string prop in path)
195
+ {
196
+ targetObject = targetObject.GetType().InvokeMember(
197
+ prop,
198
+ System.Reflection.BindingFlags.GetProperty,
199
+ null,
200
+ targetObject,
201
+ null
202
+ );
203
+ }
204
+ }
205
+ }
206
+
207
+ // Execute the method
208
+ object result = targetObject.GetType().InvokeMember(
209
+ methodName,
210
+ System.Reflection.BindingFlags.InvokeMethod,
211
+ null,
212
+ targetObject,
213
+ args
214
+ );
215
+
216
+ return new
217
+ {
218
+ success = true,
219
+ result = result
220
+ };
221
+ });
222
+ }
223
+ }
224
+ `;
225
+ // Compile the C# code (commented out - requires Edge.js)
226
+ // this.executeCS = edge.func(csharpCode);
227
+ // Mock implementation for now
228
+ this.executeCS = async (_input) => {
229
+ return { success: false, error: 'Edge.js not available - install .NET runtime' };
230
+ };
231
+ }
232
+ async connect() {
233
+ try {
234
+ const result = await this.executeCS({
235
+ command: 'Connect',
236
+ parameters: {},
237
+ });
238
+ if (result.success) {
239
+ this.connected = true;
240
+ logger.info('Connected to SolidWorks via Edge.js adapter');
241
+ }
242
+ else {
243
+ throw new Error(result.error || 'Failed to connect');
244
+ }
245
+ }
246
+ catch (error) {
247
+ logger.error('Edge.js adapter connection failed', error);
248
+ throw error;
249
+ }
250
+ }
251
+ async disconnect() {
252
+ try {
253
+ const result = await this.executeCS({
254
+ command: 'Disconnect',
255
+ parameters: {},
256
+ });
257
+ if (result.success) {
258
+ this.connected = false;
259
+ logger.info('Disconnected from SolidWorks');
260
+ }
261
+ }
262
+ catch (error) {
263
+ logger.error('Edge.js adapter disconnection failed', error);
264
+ throw error;
265
+ }
266
+ }
267
+ async execute(command) {
268
+ if (!this.connected && command.name !== 'Connect') {
269
+ throw new Error('Not connected to SolidWorks');
270
+ }
271
+ try {
272
+ // Validate command before execution
273
+ if (!command.validate()) {
274
+ throw new Error(`Command validation failed: ${command.name}`);
275
+ }
276
+ // Map command to C# execution
277
+ let result;
278
+ if (command.name === 'CreateExtrusion') {
279
+ result = await this.executeCS({
280
+ command: 'CreateExtrusion',
281
+ parameters: command.parameters,
282
+ });
283
+ }
284
+ else {
285
+ // Generic method execution
286
+ result = await this.executeCS({
287
+ command: 'ExecuteMethod',
288
+ parameters: {
289
+ objectPath: command.parameters.objectPath || 'Application',
290
+ methodName: command.name,
291
+ arguments: command.parameters.arguments || [],
292
+ },
293
+ });
294
+ }
295
+ if (result.success) {
296
+ return {
297
+ success: true,
298
+ data: result,
299
+ timing: {
300
+ start: new Date(),
301
+ end: new Date(),
302
+ duration: 0,
303
+ },
304
+ };
305
+ }
306
+ else {
307
+ throw new Error(result.error || 'Command execution failed');
308
+ }
309
+ }
310
+ catch (error) {
311
+ logger.error(`Edge.js adapter command failed: ${command.name}`, error);
312
+ // Try fallback if available
313
+ if (command.fallback) {
314
+ logger.info(`Attempting fallback for ${command.name}`);
315
+ return this.execute(command.fallback);
316
+ }
317
+ throw error;
318
+ }
319
+ }
320
+ async healthCheck() {
321
+ try {
322
+ const result = await this.executeCS({
323
+ command: 'ExecuteMethod',
324
+ parameters: {
325
+ objectPath: 'Application',
326
+ methodName: 'GetProcessID',
327
+ arguments: [],
328
+ },
329
+ });
330
+ return {
331
+ healthy: result.success && result.result > 0,
332
+ lastCheck: new Date(),
333
+ errorCount: 0,
334
+ successCount: 1,
335
+ averageResponseTime: 0,
336
+ connectionStatus: 'connected',
337
+ };
338
+ }
339
+ catch (_error) {
340
+ return {
341
+ healthy: false,
342
+ lastCheck: new Date(),
343
+ errorCount: 1,
344
+ successCount: 0,
345
+ averageResponseTime: 0,
346
+ connectionStatus: 'disconnected',
347
+ };
348
+ }
349
+ }
350
+ // Stub implementations for missing interface methods
351
+ async executeRaw(_method, _args) {
352
+ throw new Error('Edge.js adapter not available - .NET runtime required');
353
+ }
354
+ async openModel(_filePath) {
355
+ throw new Error('Edge.js adapter not available - .NET runtime required');
356
+ }
357
+ async closeModel(_save) {
358
+ throw new Error('Edge.js adapter not available - .NET runtime required');
359
+ }
360
+ async createPart() {
361
+ throw new Error('Edge.js adapter not available - .NET runtime required');
362
+ }
363
+ async createAssembly() {
364
+ throw new Error('Edge.js adapter not available - .NET runtime required');
365
+ }
366
+ async createDrawing() {
367
+ throw new Error('Edge.js adapter not available - .NET runtime required');
368
+ }
369
+ async createExtrusion(_params) {
370
+ throw new Error('Edge.js adapter not available - .NET runtime required');
371
+ }
372
+ async createRevolve(_params) {
373
+ throw new Error('Edge.js adapter not available - .NET runtime required');
374
+ }
375
+ async createSweep(_params) {
376
+ throw new Error('Edge.js adapter not available - .NET runtime required');
377
+ }
378
+ async createLoft(_params) {
379
+ throw new Error('Edge.js adapter not available - .NET runtime required');
380
+ }
381
+ async createSketch(_plane) {
382
+ throw new Error('Edge.js adapter not available - .NET runtime required');
383
+ }
384
+ async addLine(_x1, _y1, _x2, _y2) {
385
+ throw new Error('Edge.js adapter not available - .NET runtime required');
386
+ }
387
+ async addCircle(_centerX, _centerY, _radius) {
388
+ throw new Error('Edge.js adapter not available - .NET runtime required');
389
+ }
390
+ async addRectangle(_x1, _y1, _x2, _y2) {
391
+ throw new Error('Edge.js adapter not available - .NET runtime required');
392
+ }
393
+ async exitSketch() {
394
+ throw new Error('Edge.js adapter not available - .NET runtime required');
395
+ }
396
+ async getMassProperties() {
397
+ throw new Error('Edge.js adapter not available - .NET runtime required');
398
+ }
399
+ async exportFile(_filePath, _format) {
400
+ throw new Error('Edge.js adapter not available - .NET runtime required');
401
+ }
402
+ async getDimension(_name) {
403
+ throw new Error('Edge.js adapter not available - .NET runtime required');
404
+ }
405
+ async setDimension(_name, _value) {
406
+ throw new Error('Edge.js adapter not available - .NET runtime required');
407
+ }
408
+ }
409
+ /**
410
+ * Factory function to create Edge.js adapter with proper initialization
411
+ */
412
+ export async function createEdgeJsAdapter() {
413
+ const adapter = new EdgeJsAdapter();
414
+ await adapter.connect();
415
+ return adapter;
416
+ }
417
+ //# sourceMappingURL=edge-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-adapter.js","sourceRoot":"","sources":["../../src/adapters/edge-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
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 type { AdapterConfig, AdapterHealth, ISolidWorksAdapter } from './types.js';
11
+ /**
12
+ * Factory for creating and managing SolidWorks adapters
13
+ */
14
+ export declare class AdapterFactory {
15
+ private static instance;
16
+ private adapters;
17
+ private defaultConfig;
18
+ private constructor();
19
+ /**
20
+ * Get singleton instance of factory
21
+ */
22
+ static getInstance(): AdapterFactory;
23
+ /**
24
+ * Create or get adapter based on configuration
25
+ */
26
+ createAdapter(config?: Partial<AdapterConfig>): Promise<ISolidWorksAdapter>;
27
+ /**
28
+ * Create base adapter based on type
29
+ */
30
+ private createBaseAdapter;
31
+ /**
32
+ * Get the best available adapter based on system capabilities
33
+ */
34
+ getBestAdapter(): Promise<ISolidWorksAdapter>;
35
+ /**
36
+ * Detect system capabilities
37
+ */
38
+ private detectSystemCapabilities;
39
+ /**
40
+ * Generate cache key for adapter configuration
41
+ */
42
+ private getCacheKey;
43
+ /**
44
+ * Get all cached adapters
45
+ */
46
+ getCachedAdapters(): Map<string, ISolidWorksAdapter>;
47
+ /**
48
+ * Clear all cached adapters
49
+ */
50
+ clearCache(): Promise<void>;
51
+ /**
52
+ * Health check all cached adapters
53
+ */
54
+ healthCheckAll(): Promise<Map<string, AdapterHealth>>;
55
+ }
56
+ /**
57
+ * Singleton export for convenience
58
+ */
59
+ export declare const adapterFactory: AdapterFactory;
60
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGnF;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,aAAa,CAanB;IAEF,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;OAEG;IACG,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CjF;;OAEG;YACW,iBAAiB;IA4B/B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAwBnD;;OAEG;YACW,wBAAwB;IA6BtC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAIpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAqB5D;AAaD;;GAEG;AACH,eAAO,MAAM,cAAc,gBAA+B,CAAC"}