solidworks-mcp-server 2.2.0 → 3.0.1

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 (109) hide show
  1. package/README.md +33 -10
  2. package/dist/application/services/command-bus.d.ts +39 -0
  3. package/dist/application/services/command-bus.d.ts.map +1 -0
  4. package/dist/application/services/command-bus.js +88 -0
  5. package/dist/application/services/command-bus.js.map +1 -0
  6. package/dist/application/services/event-bus.d.ts +31 -0
  7. package/dist/application/services/event-bus.d.ts.map +1 -0
  8. package/dist/application/services/event-bus.js +83 -0
  9. package/dist/application/services/event-bus.js.map +1 -0
  10. package/dist/application/services/query-bus.d.ts +30 -0
  11. package/dist/application/services/query-bus.d.ts.map +1 -0
  12. package/dist/application/services/query-bus.js +59 -0
  13. package/dist/application/services/query-bus.js.map +1 -0
  14. package/dist/application/services/tool-registry.d.ts +53 -0
  15. package/dist/application/services/tool-registry.d.ts.map +1 -0
  16. package/dist/application/services/tool-registry.js +81 -0
  17. package/dist/application/services/tool-registry.js.map +1 -0
  18. package/dist/application/use-cases/analysis/index.d.ts +13 -0
  19. package/dist/application/use-cases/analysis/index.d.ts.map +1 -0
  20. package/dist/application/use-cases/analysis/index.js +17 -0
  21. package/dist/application/use-cases/analysis/index.js.map +1 -0
  22. package/dist/application/use-cases/drawing/index.d.ts +13 -0
  23. package/dist/application/use-cases/drawing/index.d.ts.map +1 -0
  24. package/dist/application/use-cases/drawing/index.js +17 -0
  25. package/dist/application/use-cases/drawing/index.js.map +1 -0
  26. package/dist/application/use-cases/export/index.d.ts +13 -0
  27. package/dist/application/use-cases/export/index.d.ts.map +1 -0
  28. package/dist/application/use-cases/export/index.js +17 -0
  29. package/dist/application/use-cases/export/index.js.map +1 -0
  30. package/dist/application/use-cases/macro/index.d.ts +13 -0
  31. package/dist/application/use-cases/macro/index.d.ts.map +1 -0
  32. package/dist/application/use-cases/macro/index.js +17 -0
  33. package/dist/application/use-cases/macro/index.js.map +1 -0
  34. package/dist/application/use-cases/modeling/index.d.ts +56 -0
  35. package/dist/application/use-cases/modeling/index.d.ts.map +1 -0
  36. package/dist/application/use-cases/modeling/index.js +385 -0
  37. package/dist/application/use-cases/modeling/index.js.map +1 -0
  38. package/dist/core/interfaces/core-abstractions.d.ts +289 -0
  39. package/dist/core/interfaces/core-abstractions.d.ts.map +1 -0
  40. package/dist/core/interfaces/core-abstractions.js +121 -0
  41. package/dist/core/interfaces/core-abstractions.js.map +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +11 -4
  44. package/dist/index.js.map +1 -1
  45. package/dist/index.refactored.d.ts +7 -0
  46. package/dist/index.refactored.d.ts.map +1 -0
  47. package/dist/index.refactored.js +254 -0
  48. package/dist/index.refactored.js.map +1 -0
  49. package/dist/infrastructure/config/configuration-manager.d.ts +381 -0
  50. package/dist/infrastructure/config/configuration-manager.d.ts.map +1 -0
  51. package/dist/infrastructure/config/configuration-manager.js +566 -0
  52. package/dist/infrastructure/config/configuration-manager.js.map +1 -0
  53. package/dist/infrastructure/container/service-locator.d.ts +14 -0
  54. package/dist/infrastructure/container/service-locator.d.ts.map +1 -0
  55. package/dist/infrastructure/container/service-locator.js +38 -0
  56. package/dist/infrastructure/container/service-locator.js.map +1 -0
  57. package/dist/infrastructure/logging/logger.d.ts +24 -0
  58. package/dist/infrastructure/logging/logger.d.ts.map +1 -0
  59. package/dist/infrastructure/logging/logger.js +65 -0
  60. package/dist/infrastructure/logging/logger.js.map +1 -0
  61. package/dist/infrastructure/solidworks/solidworks-adapter.d.ts +43 -0
  62. package/dist/infrastructure/solidworks/solidworks-adapter.d.ts.map +1 -0
  63. package/dist/infrastructure/solidworks/solidworks-adapter.js +527 -0
  64. package/dist/infrastructure/solidworks/solidworks-adapter.js.map +1 -0
  65. package/dist/presentation/mcp/request-handler.d.ts +41 -0
  66. package/dist/presentation/mcp/request-handler.d.ts.map +1 -0
  67. package/dist/presentation/mcp/request-handler.js +100 -0
  68. package/dist/presentation/mcp/request-handler.js.map +1 -0
  69. package/dist/presentation/transformers/error-transformer.d.ts +16 -0
  70. package/dist/presentation/transformers/error-transformer.d.ts.map +1 -0
  71. package/dist/presentation/transformers/error-transformer.js +44 -0
  72. package/dist/presentation/transformers/error-transformer.js.map +1 -0
  73. package/dist/presentation/transformers/response-transformer.d.ts +24 -0
  74. package/dist/presentation/transformers/response-transformer.d.ts.map +1 -0
  75. package/dist/presentation/transformers/response-transformer.js +102 -0
  76. package/dist/presentation/transformers/response-transformer.js.map +1 -0
  77. package/dist/shared/constants/solidworks-constants.d.ts +302 -0
  78. package/dist/shared/constants/solidworks-constants.d.ts.map +1 -0
  79. package/dist/shared/constants/solidworks-constants.js +471 -0
  80. package/dist/shared/constants/solidworks-constants.js.map +1 -0
  81. package/dist/tools/diagnostics.d.ts +21 -0
  82. package/dist/tools/diagnostics.d.ts.map +1 -0
  83. package/dist/tools/diagnostics.js +120 -0
  84. package/dist/tools/diagnostics.js.map +1 -0
  85. package/dist/tools/drawing-analysis.d.ts +9 -0
  86. package/dist/tools/drawing-analysis.d.ts.map +1 -0
  87. package/dist/tools/drawing-analysis.js +239 -0
  88. package/dist/tools/drawing-analysis.js.map +1 -0
  89. package/dist/tools/enhanced-drawing.d.ts +51 -0
  90. package/dist/tools/enhanced-drawing.d.ts.map +1 -0
  91. package/dist/tools/enhanced-drawing.js +193 -0
  92. package/dist/tools/enhanced-drawing.js.map +1 -0
  93. package/dist/tools/macro-security.d.ts +9 -0
  94. package/dist/tools/macro-security.d.ts.map +1 -0
  95. package/dist/tools/macro-security.js +86 -0
  96. package/dist/tools/macro-security.js.map +1 -0
  97. package/dist/tools/native-macro.d.ts +149 -0
  98. package/dist/tools/native-macro.d.ts.map +1 -0
  99. package/dist/tools/native-macro.js +654 -0
  100. package/dist/tools/native-macro.js.map +1 -0
  101. package/dist/tools/sketch.d.ts +663 -0
  102. package/dist/tools/sketch.d.ts.map +1 -0
  103. package/dist/tools/sketch.js +815 -0
  104. package/dist/tools/sketch.js.map +1 -0
  105. package/dist/tools/template-manager.d.ts +231 -0
  106. package/dist/tools/template-manager.d.ts.map +1 -0
  107. package/dist/tools/template-manager.js +626 -0
  108. package/dist/tools/template-manager.js.map +1 -0
  109. package/package.json +12 -7
package/README.md CHANGED
@@ -17,14 +17,27 @@ A comprehensive Model Context Protocol (MCP) server that enables AI assistants t
17
17
 
18
18
  ## 🎯 Quick Start
19
19
 
20
+ ### Option 1: Install from npm (Recommended)
20
21
  ```bash
21
- # Install globally
22
+ # Install globally from npm registry
22
23
  npm install -g solidworks-mcp-server
24
+ ```
25
+
26
+ ### Option 2: Manual Installation
27
+ ```bash
28
+ # Clone the repository
29
+ git clone https://github.com/vespo92/SolidworksMCP-TS
30
+ cd SolidworksMCP-TS
31
+ npm install
32
+ npm run build
23
33
 
24
- # The installer will automatically configure Claude Desktop
25
- # Restart Claude Desktop and you're ready to go!
34
+ # Link globally for use with Claude Desktop
35
+ npm link
26
36
  ```
27
37
 
38
+ ### Configure Claude Desktop
39
+ After installation, add to your Claude Desktop config and restart Claude Desktop.
40
+
28
41
  Then in Claude Desktop:
29
42
  ```
30
43
  "Generate VBA to batch export all parts in my folder to STEP format"
@@ -44,6 +57,7 @@ Then in Claude Desktop:
44
57
  - **Resource-Based Architecture** - Modular, extensible design pattern
45
58
 
46
59
  ### New in v2.1.0 - Comprehensive VBA Generation Suite
60
+ ⚠️ **IMPORTANT: VBA script generation features are NOT WORKING in the current iteration and require additional testing**
47
61
  - 🔧 **Part Modeling VBA** - Advanced features, patterns, sheet metal, surfaces
48
62
  - 🏗️ **Assembly Automation** - Mates, components, interference analysis
49
63
  - 📐 **Drawing Generation** - Views, dimensions, annotations, tables
@@ -70,12 +84,22 @@ Then in Claude Desktop:
70
84
 
71
85
  ## 🛠️ Installation
72
86
 
73
- ### 1. Install from npm
87
+ ### 1. Install the MCP Server
74
88
 
89
+ #### From npm Registry (Recommended):
75
90
  ```bash
76
91
  npm install -g solidworks-mcp-server
77
92
  ```
78
93
 
94
+ #### Or Manual Installation:
95
+ ```bash
96
+ git clone https://github.com/vespo92/SolidworksMCP-TS
97
+ cd SolidworksMCP-TS
98
+ npm install
99
+ npm run build
100
+ npm link # Makes it available globally
101
+ ```
102
+
79
103
  ### 2. Configure Claude Desktop
80
104
 
81
105
  Add to your Claude Desktop configuration:
@@ -195,7 +219,7 @@ LOG_LEVEL=info
195
219
  ### Macro Tools
196
220
  - `macro_start_recording` - Begin recording operations
197
221
  - `macro_stop_recording` - End recording and save
198
- - `macro_export_vba` - Export macro to VBA code
222
+ - `macro_export_vba` - Export macro to VBA code ⚠️ **NOT WORKING - Requires additional testing**
199
223
  - `macro_execute` - Run recorded macro
200
224
 
201
225
  ### Design Table Tools
@@ -223,7 +247,7 @@ All original tools remain available:
223
247
  - Modeling tools (create, modify, analyze)
224
248
  - Drawing tools (views, dimensions, annotations)
225
249
  - Export tools (STEP, IGES, STL, PDF, etc.)
226
- - VBA tools (generate, execute scripts)
250
+ - VBA tools ⚠️ **NOTE: VBA script generation is NOT WORKING in the current iteration and requires additional testing**
227
251
  - Analysis tools (mass properties, interference)
228
252
 
229
253
  ## 📚 API Reference
@@ -275,7 +299,7 @@ All original tools remain available:
275
299
  ### Building from Source
276
300
 
277
301
  ```bash
278
- git clone https://github.com/vinnieespo/solidworks-mcp-server
302
+ git clone https://github.com/vespo92/SolidworksMCP-TS
279
303
  cd solidworks-mcp-server
280
304
  npm install
281
305
  npm run build
@@ -373,9 +397,8 @@ We welcome contributions! Please see CONTRIBUTING.md for guidelines.
373
397
 
374
398
  ## 📞 Support
375
399
 
376
- - Issues: [GitHub Issues](https://github.com/vinnieespo/solidworks-mcp-server/issues)
377
- - Discussions: [GitHub Discussions](https://github.com/vinnieespo/solidworks-mcp-server/discussions)
378
- - Email: support@solidworksmcp.dev
400
+ - Issues: [GitHub Issues](https://github.com/vespo92/SolidworksMCP-TS/issues)
401
+ - Discussions: [GitHub Discussions](https://github.com/vespo92/SolidworksMCP-TS/discussions)
379
402
 
380
403
  ## 🚀 Roadmap
381
404
 
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Command Bus Implementation
3
+ * Handles command execution with middleware support
4
+ */
5
+ import { Result, ILogger, IMiddleware } from '../../core/interfaces/core-abstractions.js';
6
+ export interface CommandHandler<TParams = unknown, TResult = unknown> {
7
+ handle(params: TParams): Promise<Result<TResult>>;
8
+ }
9
+ export declare class CommandBus {
10
+ private logger;
11
+ private handlers;
12
+ private middleware;
13
+ constructor(logger: ILogger);
14
+ /**
15
+ * Register a command handler
16
+ */
17
+ register<TParams, TResult>(commandName: string, handler: CommandHandler<TParams, TResult>): void;
18
+ /**
19
+ * Execute a command
20
+ */
21
+ execute<TParams, TResult>(commandName: string, params: TParams): Promise<Result<TResult>>;
22
+ /**
23
+ * Add middleware
24
+ */
25
+ use(middleware: IMiddleware): void;
26
+ /**
27
+ * Apply middleware chain
28
+ */
29
+ private applyMiddleware;
30
+ /**
31
+ * Check if a handler is registered
32
+ */
33
+ hasHandler(commandName: string): boolean;
34
+ /**
35
+ * Clear all handlers
36
+ */
37
+ clear(): void;
38
+ }
39
+ //# sourceMappingURL=command-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-bus.d.ts","sourceRoot":"","sources":["../../../src/application/services/command-bus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,MAAM,EAEN,OAAO,EACP,WAAW,EACZ,MAAM,4CAA4C,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAClE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,qBAAa,UAAU;IAIT,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,UAAU,CAAqB;gBAEnB,MAAM,EAAE,OAAO;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,GACxC,IAAI;IAQP;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAiC3B;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAIlC;;OAEG;YACW,eAAe;IAe7B;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Command Bus Implementation
3
+ * Handles command execution with middleware support
4
+ */
5
+ import { ResultUtil } from '../../core/interfaces/core-abstractions.js';
6
+ export class CommandBus {
7
+ logger;
8
+ handlers = new Map();
9
+ middleware = [];
10
+ constructor(logger) {
11
+ this.logger = logger;
12
+ }
13
+ /**
14
+ * Register a command handler
15
+ */
16
+ register(commandName, handler) {
17
+ if (this.handlers.has(commandName)) {
18
+ this.logger.warn(`Command handler ${commandName} is already registered`);
19
+ }
20
+ this.handlers.set(commandName, handler);
21
+ this.logger.debug(`Registered command handler: ${commandName}`);
22
+ }
23
+ /**
24
+ * Execute a command
25
+ */
26
+ async execute(commandName, params) {
27
+ try {
28
+ const handler = this.handlers.get(commandName);
29
+ if (!handler) {
30
+ return ResultUtil.fail(new Error(`No handler registered for command: ${commandName}`));
31
+ }
32
+ // Apply middleware
33
+ const context = { commandName, params, handler };
34
+ const middlewareResult = await this.applyMiddleware(context);
35
+ if (!ResultUtil.isSuccess(middlewareResult)) {
36
+ return middlewareResult;
37
+ }
38
+ // Execute the command
39
+ this.logger.debug(`Executing command: ${commandName}`, { params });
40
+ const result = await handler.handle(params);
41
+ if (ResultUtil.isSuccess(result)) {
42
+ this.logger.debug(`Command executed successfully: ${commandName}`);
43
+ }
44
+ else {
45
+ this.logger.warn(`Command failed: ${commandName}`, { error: result.error });
46
+ }
47
+ return result;
48
+ }
49
+ catch (error) {
50
+ this.logger.error(`Unexpected error executing command: ${commandName}`, error);
51
+ return ResultUtil.fail(error);
52
+ }
53
+ }
54
+ /**
55
+ * Add middleware
56
+ */
57
+ use(middleware) {
58
+ this.middleware.push(middleware);
59
+ }
60
+ /**
61
+ * Apply middleware chain
62
+ */
63
+ async applyMiddleware(context) {
64
+ let index = 0;
65
+ const next = async () => {
66
+ if (index >= this.middleware.length) {
67
+ return ResultUtil.ok(undefined);
68
+ }
69
+ const currentMiddleware = this.middleware[index++];
70
+ return currentMiddleware.execute(context, next);
71
+ };
72
+ return next();
73
+ }
74
+ /**
75
+ * Check if a handler is registered
76
+ */
77
+ hasHandler(commandName) {
78
+ return this.handlers.has(commandName);
79
+ }
80
+ /**
81
+ * Clear all handlers
82
+ */
83
+ clear() {
84
+ this.handlers.clear();
85
+ this.middleware = [];
86
+ }
87
+ }
88
+ //# sourceMappingURL=command-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-bus.js","sourceRoot":"","sources":["../../../src/application/services/command-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Event Bus Implementation
3
+ * Handles event publishing and subscription
4
+ */
5
+ import { IEventBus, IEvent, IEventHandler, Result, ILogger } from '../../core/interfaces/core-abstractions.js';
6
+ export declare class EventBus implements IEventBus {
7
+ private logger;
8
+ private handlers;
9
+ constructor(logger: ILogger);
10
+ /**
11
+ * Publish an event to all registered handlers
12
+ */
13
+ publish(event: IEvent): Promise<Result<void>>;
14
+ /**
15
+ * Subscribe to an event type
16
+ */
17
+ subscribe(eventType: string, handler: IEventHandler): void;
18
+ /**
19
+ * Unsubscribe from an event type
20
+ */
21
+ unsubscribe(eventType: string, handler: IEventHandler): void;
22
+ /**
23
+ * Clear all subscriptions
24
+ */
25
+ clear(): void;
26
+ /**
27
+ * Get the number of handlers for an event type
28
+ */
29
+ getHandlerCount(eventType: string): number;
30
+ }
31
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/application/services/event-bus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,SAAS,EACT,MAAM,EACN,aAAa,EACb,MAAM,EAEN,OAAO,EACR,MAAM,4CAA4C,CAAC;AAEpD,qBAAa,QAAS,YAAW,SAAS;IAG5B,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAA8C;gBAE1C,MAAM,EAAE,OAAO;IAEnC;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAuCnD;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAQ1D;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAW5D;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAI3C"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Event Bus Implementation
3
+ * Handles event publishing and subscription
4
+ */
5
+ import { ResultUtil } from '../../core/interfaces/core-abstractions.js';
6
+ export class EventBus {
7
+ logger;
8
+ handlers = new Map();
9
+ constructor(logger) {
10
+ this.logger = logger;
11
+ }
12
+ /**
13
+ * Publish an event to all registered handlers
14
+ */
15
+ async publish(event) {
16
+ try {
17
+ const handlers = this.handlers.get(event.type);
18
+ if (!handlers || handlers.size === 0) {
19
+ this.logger.debug(`No handlers for event type: ${event.type}`);
20
+ return ResultUtil.ok(undefined);
21
+ }
22
+ this.logger.debug(`Publishing event: ${event.type}`, {
23
+ eventId: event.id,
24
+ handlerCount: handlers.size
25
+ });
26
+ const promises = [];
27
+ for (const handler of handlers) {
28
+ if (handler.canHandle(event)) {
29
+ promises.push(handler.handle(event));
30
+ }
31
+ }
32
+ const results = await Promise.allSettled(promises);
33
+ const failures = results.filter((result) => result.status === 'rejected');
34
+ if (failures.length > 0) {
35
+ this.logger.warn(`Some event handlers failed for: ${event.type}`, {
36
+ failures: failures.map(f => f.reason)
37
+ });
38
+ }
39
+ return ResultUtil.ok(undefined);
40
+ }
41
+ catch (error) {
42
+ this.logger.error(`Failed to publish event: ${event.type}`, error);
43
+ return ResultUtil.fail(error);
44
+ }
45
+ }
46
+ /**
47
+ * Subscribe to an event type
48
+ */
49
+ subscribe(eventType, handler) {
50
+ if (!this.handlers.has(eventType)) {
51
+ this.handlers.set(eventType, new Set());
52
+ }
53
+ this.handlers.get(eventType).add(handler);
54
+ this.logger.debug(`Subscribed to event: ${eventType}`);
55
+ }
56
+ /**
57
+ * Unsubscribe from an event type
58
+ */
59
+ unsubscribe(eventType, handler) {
60
+ const handlers = this.handlers.get(eventType);
61
+ if (handlers) {
62
+ handlers.delete(handler);
63
+ if (handlers.size === 0) {
64
+ this.handlers.delete(eventType);
65
+ }
66
+ this.logger.debug(`Unsubscribed from event: ${eventType}`);
67
+ }
68
+ }
69
+ /**
70
+ * Clear all subscriptions
71
+ */
72
+ clear() {
73
+ this.handlers.clear();
74
+ }
75
+ /**
76
+ * Get the number of handlers for an event type
77
+ */
78
+ getHandlerCount(eventType) {
79
+ const handlers = this.handlers.get(eventType);
80
+ return handlers ? handlers.size : 0;
81
+ }
82
+ }
83
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/application/services/event-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Query Bus Implementation
3
+ * Handles query execution for read operations
4
+ */
5
+ import { Result, ILogger } from '../../core/interfaces/core-abstractions.js';
6
+ export interface QueryHandler<TParams = unknown, TResult = unknown> {
7
+ handle(params: TParams): Promise<Result<TResult>>;
8
+ }
9
+ export declare class QueryBus {
10
+ private logger;
11
+ private handlers;
12
+ constructor(logger: ILogger);
13
+ /**
14
+ * Register a query handler
15
+ */
16
+ register<TParams, TResult>(queryName: string, handler: QueryHandler<TParams, TResult>): void;
17
+ /**
18
+ * Execute a query
19
+ */
20
+ execute<TParams, TResult>(queryName: string, params: TParams): Promise<Result<TResult>>;
21
+ /**
22
+ * Check if a handler is registered
23
+ */
24
+ hasHandler(queryName: string): boolean;
25
+ /**
26
+ * Clear all handlers
27
+ */
28
+ clear(): void;
29
+ }
30
+ //# sourceMappingURL=query-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-bus.d.ts","sourceRoot":"","sources":["../../../src/application/services/query-bus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,MAAM,EAEN,OAAO,EACR,MAAM,4CAA4C,CAAC;AAEpD,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAChE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,qBAAa,QAAQ;IAGP,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAwC;gBAEpC,MAAM,EAAE,OAAO;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,GACtC,IAAI;IAQP;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAyB3B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Query Bus Implementation
3
+ * Handles query execution for read operations
4
+ */
5
+ import { ResultUtil } from '../../core/interfaces/core-abstractions.js';
6
+ export class QueryBus {
7
+ logger;
8
+ handlers = new Map();
9
+ constructor(logger) {
10
+ this.logger = logger;
11
+ }
12
+ /**
13
+ * Register a query handler
14
+ */
15
+ register(queryName, handler) {
16
+ if (this.handlers.has(queryName)) {
17
+ this.logger.warn(`Query handler ${queryName} is already registered`);
18
+ }
19
+ this.handlers.set(queryName, handler);
20
+ this.logger.debug(`Registered query handler: ${queryName}`);
21
+ }
22
+ /**
23
+ * Execute a query
24
+ */
25
+ async execute(queryName, params) {
26
+ try {
27
+ const handler = this.handlers.get(queryName);
28
+ if (!handler) {
29
+ return ResultUtil.fail(new Error(`No handler registered for query: ${queryName}`));
30
+ }
31
+ this.logger.debug(`Executing query: ${queryName}`, { params });
32
+ const result = await handler.handle(params);
33
+ if (ResultUtil.isSuccess(result)) {
34
+ this.logger.debug(`Query executed successfully: ${queryName}`);
35
+ }
36
+ else {
37
+ this.logger.warn(`Query failed: ${queryName}`, { error: result.error });
38
+ }
39
+ return result;
40
+ }
41
+ catch (error) {
42
+ this.logger.error(`Unexpected error executing query: ${queryName}`, error);
43
+ return ResultUtil.fail(error);
44
+ }
45
+ }
46
+ /**
47
+ * Check if a handler is registered
48
+ */
49
+ hasHandler(queryName) {
50
+ return this.handlers.has(queryName);
51
+ }
52
+ /**
53
+ * Clear all handlers
54
+ */
55
+ clear() {
56
+ this.handlers.clear();
57
+ }
58
+ }
59
+ //# sourceMappingURL=query-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-bus.js","sourceRoot":"","sources":["../../../src/application/services/query-bus.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,UAAU,EAEX,MAAM,4CAA4C,CAAC;AAMpD,MAAM,OAAO,QAAQ;IAGC;IAFZ,QAAQ,GAA8B,IAAI,GAAG,EAAE,CAAC;IAExD,YAAoB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEvC;;OAEG;IACH,QAAQ,CACN,SAAiB,EACjB,OAAuC;QAEvC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,wBAAwB,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,MAAe;QAEf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,UAAU,CAAC,IAAI,CACpB,IAAI,KAAK,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAC3D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,SAAS,EAAE,EAAE,KAAc,CAAC,CAAC;YACpF,OAAO,UAAU,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Tool Registry Service
3
+ * Manages and provides access to all available tools
4
+ */
5
+ import { z } from 'zod';
6
+ import { ILogger } from '../../core/interfaces/core-abstractions.js';
7
+ export interface Tool {
8
+ name: string;
9
+ description: string;
10
+ inputSchema: z.ZodSchema;
11
+ handler: (args: any) => Promise<any> | any;
12
+ category?: string;
13
+ tags?: string[];
14
+ }
15
+ export declare class ToolRegistry {
16
+ private logger;
17
+ private tools;
18
+ private categories;
19
+ constructor(logger: ILogger);
20
+ /**
21
+ * Register a new tool
22
+ */
23
+ register(tool: Tool): void;
24
+ /**
25
+ * Get a tool by name
26
+ */
27
+ get(name: string): Tool | undefined;
28
+ /**
29
+ * Get all tools
30
+ */
31
+ getAll(): Tool[];
32
+ /**
33
+ * Get tools by category
34
+ */
35
+ getByCategory(category: string): Tool[];
36
+ /**
37
+ * Check if a tool exists
38
+ */
39
+ has(name: string): boolean;
40
+ /**
41
+ * Get the number of registered tools
42
+ */
43
+ count(): number;
44
+ /**
45
+ * Get all categories
46
+ */
47
+ getCategories(): string[];
48
+ /**
49
+ * Clear all tools
50
+ */
51
+ clear(): void;
52
+ }
53
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/application/services/tool-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAErE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;IACzB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,YAAY;IAIX,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,UAAU,CAAuC;gBAErC,MAAM,EAAE,OAAO;IAEnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAqB1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC;;OAEG;IACH,MAAM,IAAI,IAAI,EAAE;IAIhB;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IASvC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Tool Registry Service
3
+ * Manages and provides access to all available tools
4
+ */
5
+ export class ToolRegistry {
6
+ logger;
7
+ tools = new Map();
8
+ categories = new Map();
9
+ constructor(logger) {
10
+ this.logger = logger;
11
+ }
12
+ /**
13
+ * Register a new tool
14
+ */
15
+ register(tool) {
16
+ if (this.tools.has(tool.name)) {
17
+ this.logger.warn(`Tool ${tool.name} is already registered, overwriting`);
18
+ }
19
+ this.tools.set(tool.name, tool);
20
+ // Add to category index
21
+ if (tool.category) {
22
+ if (!this.categories.has(tool.category)) {
23
+ this.categories.set(tool.category, new Set());
24
+ }
25
+ this.categories.get(tool.category).add(tool.name);
26
+ }
27
+ this.logger.debug(`Registered tool: ${tool.name}`, {
28
+ category: tool.category,
29
+ tags: tool.tags
30
+ });
31
+ }
32
+ /**
33
+ * Get a tool by name
34
+ */
35
+ get(name) {
36
+ return this.tools.get(name);
37
+ }
38
+ /**
39
+ * Get all tools
40
+ */
41
+ getAll() {
42
+ return Array.from(this.tools.values());
43
+ }
44
+ /**
45
+ * Get tools by category
46
+ */
47
+ getByCategory(category) {
48
+ const toolNames = this.categories.get(category);
49
+ if (!toolNames)
50
+ return [];
51
+ return Array.from(toolNames)
52
+ .map(name => this.tools.get(name))
53
+ .filter((tool) => tool !== undefined);
54
+ }
55
+ /**
56
+ * Check if a tool exists
57
+ */
58
+ has(name) {
59
+ return this.tools.has(name);
60
+ }
61
+ /**
62
+ * Get the number of registered tools
63
+ */
64
+ count() {
65
+ return this.tools.size;
66
+ }
67
+ /**
68
+ * Get all categories
69
+ */
70
+ getCategories() {
71
+ return Array.from(this.categories.keys());
72
+ }
73
+ /**
74
+ * Clear all tools
75
+ */
76
+ clear() {
77
+ this.tools.clear();
78
+ this.categories.clear();
79
+ }
80
+ }
81
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/application/services/tool-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,OAAO,YAAY;IAIH;IAHZ,KAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;IACrC,UAAU,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEzD,YAAoB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,IAAU;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,qCAAqC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEhC,wBAAwB;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,EAAE;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAAgB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;aACzB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACjC,MAAM,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Analysis Use Cases
3
+ * Business logic for SolidWorks analysis operations
4
+ */
5
+ import { ISolidWorksAdapter, ILogger } from '../../../core/interfaces/core-abstractions.js';
6
+ import { Tool } from '../../services/tool-registry.js';
7
+ export declare class AnalysisUseCases {
8
+ private swAdapter;
9
+ private logger;
10
+ constructor(swAdapter: ISolidWorksAdapter, logger: ILogger);
11
+ getTools(): Tool[];
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/application/use-cases/analysis/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,kBAAkB,EAClB,OAAO,EACR,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBADN,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,OAAO;IAGzB,QAAQ,IAAI,IAAI,EAAE;CAInB"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Analysis Use Cases
3
+ * Business logic for SolidWorks analysis operations
4
+ */
5
+ export class AnalysisUseCases {
6
+ swAdapter;
7
+ logger;
8
+ constructor(swAdapter, logger) {
9
+ this.swAdapter = swAdapter;
10
+ this.logger = logger;
11
+ }
12
+ getTools() {
13
+ // Placeholder - will be implemented with actual analysis tools
14
+ return [];
15
+ }
16
+ }
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/application/use-cases/analysis/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,OAAO,gBAAgB;IAEjB;IACA;IAFV,YACU,SAA6B,EAC7B,MAAe;QADf,cAAS,GAAT,SAAS,CAAoB;QAC7B,WAAM,GAAN,MAAM,CAAS;IACtB,CAAC;IAEJ,QAAQ;QACN,+DAA+D;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Drawing Use Cases
3
+ * Business logic for SolidWorks drawing operations
4
+ */
5
+ import { ISolidWorksAdapter, ILogger } from '../../../core/interfaces/core-abstractions.js';
6
+ import { Tool } from '../../services/tool-registry.js';
7
+ export declare class DrawingUseCases {
8
+ private swAdapter;
9
+ private logger;
10
+ constructor(swAdapter: ISolidWorksAdapter, logger: ILogger);
11
+ getTools(): Tool[];
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map