solidworks-mcp-server 2.0.0

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 (88) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +21 -0
  3. package/README.md +333 -0
  4. package/dist/cache/manager.d.ts +50 -0
  5. package/dist/cache/manager.d.ts.map +1 -0
  6. package/dist/cache/manager.js +127 -0
  7. package/dist/cache/manager.js.map +1 -0
  8. package/dist/db/connection.d.ts +48 -0
  9. package/dist/db/connection.d.ts.map +1 -0
  10. package/dist/db/connection.js +132 -0
  11. package/dist/db/connection.js.map +1 -0
  12. package/dist/index.d.ts +37 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +402 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/knowledge/chromadb.d.ts +16 -0
  17. package/dist/knowledge/chromadb.d.ts.map +1 -0
  18. package/dist/knowledge/chromadb.js +80 -0
  19. package/dist/knowledge/chromadb.js.map +1 -0
  20. package/dist/macro/index.d.ts +6 -0
  21. package/dist/macro/index.d.ts.map +1 -0
  22. package/dist/macro/index.js +6 -0
  23. package/dist/macro/index.js.map +1 -0
  24. package/dist/macro/recorder.d.ts +72 -0
  25. package/dist/macro/recorder.d.ts.map +1 -0
  26. package/dist/macro/recorder.js +228 -0
  27. package/dist/macro/recorder.js.map +1 -0
  28. package/dist/macro/types.d.ts +77 -0
  29. package/dist/macro/types.d.ts.map +1 -0
  30. package/dist/macro/types.js +5 -0
  31. package/dist/macro/types.js.map +1 -0
  32. package/dist/resources/base.d.ts +116 -0
  33. package/dist/resources/base.d.ts.map +1 -0
  34. package/dist/resources/base.js +161 -0
  35. package/dist/resources/base.js.map +1 -0
  36. package/dist/resources/design-table.d.ts +384 -0
  37. package/dist/resources/design-table.d.ts.map +1 -0
  38. package/dist/resources/design-table.js +337 -0
  39. package/dist/resources/design-table.js.map +1 -0
  40. package/dist/resources/pdm.d.ts +1277 -0
  41. package/dist/resources/pdm.d.ts.map +1 -0
  42. package/dist/resources/pdm.js +358 -0
  43. package/dist/resources/pdm.js.map +1 -0
  44. package/dist/resources/registry.d.ts +59 -0
  45. package/dist/resources/registry.d.ts.map +1 -0
  46. package/dist/resources/registry.js +88 -0
  47. package/dist/resources/registry.js.map +1 -0
  48. package/dist/solidworks/api.d.ts +24 -0
  49. package/dist/solidworks/api.d.ts.map +1 -0
  50. package/dist/solidworks/api.js +226 -0
  51. package/dist/solidworks/api.js.map +1 -0
  52. package/dist/solidworks/types.d.ts +55 -0
  53. package/dist/solidworks/types.d.ts.map +1 -0
  54. package/dist/solidworks/types.js +2 -0
  55. package/dist/solidworks/types.js.map +1 -0
  56. package/dist/state/store.d.ts +101 -0
  57. package/dist/state/store.d.ts.map +1 -0
  58. package/dist/state/store.js +262 -0
  59. package/dist/state/store.js.map +1 -0
  60. package/dist/tools/analysis.d.ts +37 -0
  61. package/dist/tools/analysis.d.ts.map +1 -0
  62. package/dist/tools/analysis.js +169 -0
  63. package/dist/tools/analysis.js.map +1 -0
  64. package/dist/tools/drawing.d.ts +151 -0
  65. package/dist/tools/drawing.d.ts.map +1 -0
  66. package/dist/tools/drawing.js +171 -0
  67. package/dist/tools/drawing.js.map +1 -0
  68. package/dist/tools/export.d.ts +97 -0
  69. package/dist/tools/export.d.ts.map +1 -0
  70. package/dist/tools/export.js +128 -0
  71. package/dist/tools/export.js.map +1 -0
  72. package/dist/tools/modeling.d.ts +9 -0
  73. package/dist/tools/modeling.d.ts.map +1 -0
  74. package/dist/tools/modeling.js +120 -0
  75. package/dist/tools/modeling.js.map +1 -0
  76. package/dist/tools/vba.d.ts +123 -0
  77. package/dist/tools/vba.d.ts.map +1 -0
  78. package/dist/tools/vba.js +158 -0
  79. package/dist/tools/vba.js.map +1 -0
  80. package/dist/utils/config.d.ts +18 -0
  81. package/dist/utils/config.d.ts.map +1 -0
  82. package/dist/utils/config.js +26 -0
  83. package/dist/utils/config.js.map +1 -0
  84. package/dist/utils/logger.d.ts +14 -0
  85. package/dist/utils/logger.d.ts.map +1 -0
  86. package/dist/utils/logger.js +84 -0
  87. package/dist/utils/logger.js.map +1 -0
  88. package/package.json +76 -0
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Design Table Resource for SolidWorks MCP
3
+ * Manages design tables with SQL database integration
4
+ */
5
+ import { z } from 'zod';
6
+ import { SolidWorksResource, ResourceStatus } from './base.js';
7
+ import { dbManager } from '../db/connection.js';
8
+ import { logger } from '../utils/logger.js';
9
+ // Schema for design table configuration
10
+ const DesignTableSchema = z.object({
11
+ tableName: z.string().min(1),
12
+ fileName: z.string().optional(),
13
+ parameters: z.array(z.object({
14
+ name: z.string(),
15
+ type: z.enum(['dimension', 'feature', 'configuration', 'custom']),
16
+ dataType: z.enum(['number', 'string', 'boolean']),
17
+ defaultValue: z.any().optional(),
18
+ sqlColumn: z.string().optional(),
19
+ formula: z.string().optional()
20
+ })),
21
+ configurations: z.array(z.object({
22
+ name: z.string(),
23
+ values: z.record(z.any()),
24
+ active: z.boolean().default(false)
25
+ })).optional(),
26
+ dataSource: z.object({
27
+ type: z.enum(['file', 'sql', 'api', 'manual']),
28
+ connectionString: z.string().optional(),
29
+ query: z.string().optional(),
30
+ filePath: z.string().optional(),
31
+ apiEndpoint: z.string().optional(),
32
+ refreshInterval: z.number().optional()
33
+ }).optional(),
34
+ autoUpdate: z.boolean().default(false),
35
+ validation: z.object({
36
+ enabled: z.boolean().default(true),
37
+ rules: z.array(z.object({
38
+ parameter: z.string(),
39
+ rule: z.string(),
40
+ message: z.string()
41
+ })).optional()
42
+ }).optional()
43
+ });
44
+ export class DesignTableResource extends SolidWorksResource {
45
+ type = 'design-table';
46
+ schema = DesignTableSchema;
47
+ sqlConnection = null;
48
+ constructor(id, name, properties) {
49
+ super(id, name, properties);
50
+ }
51
+ /**
52
+ * Execute design table operations
53
+ */
54
+ async execute(api) {
55
+ this.setStatus(ResourceStatus.EXECUTING);
56
+ try {
57
+ const config = this._properties;
58
+ // Load data from SQL if configured
59
+ if (config.dataSource?.type === 'sql') {
60
+ await this.loadFromSQL(config.dataSource);
61
+ }
62
+ // Create or update design table in SolidWorks
63
+ const result = await this.updateDesignTable(api, config);
64
+ this.setStatus(ResourceStatus.COMPLETED);
65
+ this.setOutputs({
66
+ tableId: result.tableId,
67
+ configurationsCreated: result.configurations,
68
+ parametersUpdated: result.parameters,
69
+ timestamp: new Date().toISOString()
70
+ });
71
+ return result;
72
+ }
73
+ catch (error) {
74
+ this.setStatus(ResourceStatus.FAILED);
75
+ throw error;
76
+ }
77
+ }
78
+ /**
79
+ * Load data from SQL database
80
+ */
81
+ async loadFromSQL(dataSource) {
82
+ if (!dataSource.connectionString || !dataSource.query) {
83
+ throw new Error('SQL connection string and query are required');
84
+ }
85
+ try {
86
+ // Create database connection
87
+ const connection = await dbManager.createConnection(`design_table_${this.id}`, dataSource.connectionString);
88
+ // Execute query
89
+ const data = await connection.query(dataSource.query);
90
+ // Map SQL results to configurations
91
+ const configurations = data.map((row, index) => ({
92
+ name: row.config_name || row.name || `Config_${index + 1}`,
93
+ values: this.mapSQLToParameters(row),
94
+ active: index === 0
95
+ }));
96
+ // Update properties with loaded configurations
97
+ this._properties.configurations = configurations;
98
+ logger.info(`Loaded ${configurations.length} configurations from SQL`);
99
+ // Close connection
100
+ await dbManager.closeConnection(`design_table_${this.id}`);
101
+ }
102
+ catch (error) {
103
+ logger.error('Failed to load from SQL', error);
104
+ // Fallback to simulated data for testing
105
+ const simulatedData = await this.getSimulatedData();
106
+ const configurations = simulatedData.map((row, index) => ({
107
+ name: row.config_name || `Config_${index + 1}`,
108
+ values: this.mapSQLToParameters(row),
109
+ active: index === 0
110
+ }));
111
+ this._properties.configurations = configurations;
112
+ }
113
+ }
114
+ /**
115
+ * Get simulated data for testing
116
+ */
117
+ async getSimulatedData() {
118
+ // Fallback data for when database is not available
119
+ return [
120
+ {
121
+ config_name: 'Standard',
122
+ length: 100,
123
+ width: 50,
124
+ height: 25,
125
+ material: 'Steel',
126
+ finish: 'Painted'
127
+ },
128
+ {
129
+ config_name: 'Large',
130
+ length: 150,
131
+ width: 75,
132
+ height: 40,
133
+ material: 'Aluminum',
134
+ finish: 'Anodized'
135
+ },
136
+ {
137
+ config_name: 'Custom',
138
+ length: 120,
139
+ width: 60,
140
+ height: 30,
141
+ material: 'Steel',
142
+ finish: 'Powder Coated'
143
+ }
144
+ ];
145
+ }
146
+ /**
147
+ * Map SQL row data to design table parameters
148
+ */
149
+ mapSQLToParameters(row) {
150
+ const config = this._properties;
151
+ const values = {};
152
+ for (const param of config.parameters) {
153
+ if (param.sqlColumn && row[param.sqlColumn] !== undefined) {
154
+ values[param.name] = this.convertValue(row[param.sqlColumn], param.dataType);
155
+ }
156
+ else if (param.formula) {
157
+ values[param.name] = this.evaluateFormula(param.formula, row);
158
+ }
159
+ else if (param.defaultValue !== undefined) {
160
+ values[param.name] = param.defaultValue;
161
+ }
162
+ }
163
+ return values;
164
+ }
165
+ /**
166
+ * Convert value to appropriate data type
167
+ */
168
+ convertValue(value, dataType) {
169
+ switch (dataType) {
170
+ case 'number':
171
+ return Number(value);
172
+ case 'boolean':
173
+ return Boolean(value);
174
+ case 'string':
175
+ default:
176
+ return String(value);
177
+ }
178
+ }
179
+ /**
180
+ * Evaluate formula with row data
181
+ */
182
+ evaluateFormula(formula, row) {
183
+ // Simple formula evaluation (expand as needed)
184
+ let result = formula;
185
+ for (const [key, value] of Object.entries(row)) {
186
+ result = result.replace(`{${key}}`, String(value));
187
+ }
188
+ return result;
189
+ }
190
+ /**
191
+ * Update design table in SolidWorks
192
+ */
193
+ async updateDesignTable(api, config) {
194
+ // This would interact with actual SolidWorks API
195
+ return {
196
+ tableId: this.id,
197
+ configurations: config.configurations?.map(c => c.name) || [],
198
+ parameters: config.parameters.map(p => p.name)
199
+ };
200
+ }
201
+ /**
202
+ * Convert to VBA code
203
+ */
204
+ toVBACode() {
205
+ const config = this._properties;
206
+ const vbaLines = [
207
+ `' Design Table: ${this.name}`,
208
+ `Sub CreateDesignTable_${this.sanitizeName(this.name)}()`,
209
+ ' Dim swApp As SldWorks.SldWorks',
210
+ ' Dim swModel As SldWorks.ModelDoc2',
211
+ ' Dim swDesignTable As SldWorks.DesignTable',
212
+ ' ',
213
+ ' Set swApp = Application.SldWorks',
214
+ ' Set swModel = swApp.ActiveDoc',
215
+ ' ',
216
+ ' \' Create design table',
217
+ ` Set swDesignTable = swModel.InsertDesignTable("${config.tableName}", True, False)`,
218
+ ' '
219
+ ];
220
+ // Add parameters
221
+ for (const param of config.parameters) {
222
+ vbaLines.push(` ' Add parameter: ${param.name}`);
223
+ vbaLines.push(` swDesignTable.AddParameter "${param.name}", "${param.type}"`);
224
+ }
225
+ // Add configurations
226
+ if (config.configurations) {
227
+ vbaLines.push(' ');
228
+ vbaLines.push(' \' Add configurations');
229
+ for (const cfg of config.configurations) {
230
+ vbaLines.push(` swDesignTable.AddConfiguration "${cfg.name}"`);
231
+ for (const [key, value] of Object.entries(cfg.values)) {
232
+ vbaLines.push(` swDesignTable.SetCellValue "${cfg.name}", "${key}", "${value}"`);
233
+ }
234
+ }
235
+ }
236
+ vbaLines.push(' ');
237
+ vbaLines.push(' swDesignTable.UpdateTable');
238
+ vbaLines.push('End Sub');
239
+ return vbaLines.join('\n');
240
+ }
241
+ /**
242
+ * Convert to macro code
243
+ */
244
+ toMacroCode() {
245
+ const config = this._properties;
246
+ return JSON.stringify({
247
+ type: 'design-table',
248
+ name: this.name,
249
+ actions: [
250
+ {
251
+ action: 'create-design-table',
252
+ parameters: {
253
+ tableName: config.tableName,
254
+ parameters: config.parameters,
255
+ configurations: config.configurations
256
+ }
257
+ }
258
+ ]
259
+ }, null, 2);
260
+ }
261
+ /**
262
+ * Get required capabilities
263
+ */
264
+ getRequiredCapabilities() {
265
+ const config = this._properties;
266
+ const capabilities = ['design-table'];
267
+ if (config.dataSource?.type === 'sql') {
268
+ capabilities.push('sql-integration');
269
+ }
270
+ if (config.autoUpdate) {
271
+ capabilities.push('auto-update');
272
+ }
273
+ return capabilities;
274
+ }
275
+ /**
276
+ * Sanitize name for VBA
277
+ */
278
+ sanitizeName(name) {
279
+ return name.replace(/[^a-zA-Z0-9_]/g, '_');
280
+ }
281
+ /**
282
+ * Refresh data from source
283
+ */
284
+ async refresh(api) {
285
+ const config = this._properties;
286
+ if (config.dataSource?.type === 'sql') {
287
+ await this.loadFromSQL(config.dataSource);
288
+ await this.updateDesignTable(api, config);
289
+ }
290
+ }
291
+ /**
292
+ * Validate design table configuration
293
+ */
294
+ validateConfiguration() {
295
+ const result = super.validate();
296
+ if (!result.valid) {
297
+ return result;
298
+ }
299
+ const config = this._properties;
300
+ const warnings = [];
301
+ // Check for parameter conflicts
302
+ const paramNames = new Set();
303
+ for (const param of config.parameters) {
304
+ if (paramNames.has(param.name)) {
305
+ warnings.push({
306
+ path: `parameters.${param.name}`,
307
+ message: `Duplicate parameter name: ${param.name}`
308
+ });
309
+ }
310
+ paramNames.add(param.name);
311
+ }
312
+ // Validate SQL configuration
313
+ if (config.dataSource?.type === 'sql') {
314
+ if (!config.dataSource.connectionString) {
315
+ warnings.push({
316
+ path: 'dataSource.connectionString',
317
+ message: 'SQL connection string is required for SQL data source'
318
+ });
319
+ }
320
+ if (!config.dataSource.query) {
321
+ warnings.push({
322
+ path: 'dataSource.query',
323
+ message: 'SQL query is required for SQL data source'
324
+ });
325
+ }
326
+ }
327
+ return {
328
+ valid: warnings.length === 0,
329
+ warnings: warnings.length > 0 ? warnings : undefined
330
+ };
331
+ }
332
+ }
333
+ // Type guard
334
+ export function isDesignTableResource(resource) {
335
+ return resource instanceof DesignTableResource;
336
+ }
337
+ //# sourceMappingURL=design-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-table.js","sourceRoot":"","sources":["../../src/resources/design-table.ts"],"names":[],"mappings":"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"}