solidworks-mcp-server
Version:
Clean Architecture SolidWorks MCP Server - Production-ready with SOLID principles
161 lines • 4.39 kB
JavaScript
/**
* Base Resource Class for SolidWorks MCP Implementation
* Provides foundation for all SolidWorks resources with state management
*/
import { z } from 'zod';
export var ResourceStatus;
(function (ResourceStatus) {
ResourceStatus["PENDING"] = "pending";
ResourceStatus["CREATING"] = "creating";
ResourceStatus["CREATED"] = "created";
ResourceStatus["UPDATING"] = "updating";
ResourceStatus["DELETING"] = "deleting";
ResourceStatus["DELETED"] = "deleted";
ResourceStatus["FAILED"] = "failed";
ResourceStatus["EXECUTING"] = "executing";
ResourceStatus["COMPLETED"] = "completed";
ResourceStatus["UNKNOWN"] = "unknown";
})(ResourceStatus || (ResourceStatus = {}));
export class SolidWorksResource {
id;
name;
_properties;
_outputs = {};
_dependencies = [];
_status = ResourceStatus.PENDING;
_metadata;
constructor(id, name, properties) {
this.id = id;
this.name = name;
this._properties = properties;
this._metadata = {
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
createdBy: 'solidworks-mcp',
version: 1,
tags: {},
annotations: {}
};
}
/**
* Validate the resource properties against schema
*/
validate() {
try {
this.schema.parse(this._properties);
return { valid: true };
}
catch (error) {
if (error instanceof z.ZodError) {
return {
valid: false,
errors: error.errors.map(e => ({
path: e.path.join('.'),
message: e.message
}))
};
}
return {
valid: false,
errors: [{ path: '', message: 'Unknown validation error' }]
};
}
}
/**
* Convert resource to state representation
*/
toState() {
return {
id: this.id,
type: this.type,
name: this.name,
properties: this._properties,
outputs: this._outputs,
metadata: this._metadata,
status: this._status
};
}
/**
* Restore resource from state
*/
fromState(state) {
this._properties = state.properties;
this._outputs = state.outputs;
this._metadata = state.metadata;
this._status = state.status;
}
/**
* Get resource dependencies
*/
getDependencies() {
return this._dependencies;
}
/**
* Add a dependency to this resource
*/
addDependency(dependency) {
this._dependencies.push(dependency);
}
/**
* Get resource outputs
*/
getOutputs() {
return this._outputs;
}
/**
* Set resource outputs
*/
setOutputs(outputs) {
this._outputs = outputs;
this._metadata.updatedAt = new Date().toISOString();
}
/**
* Get resource status
*/
getStatus() {
return this._status;
}
/**
* Update resource status
*/
setStatus(status) {
this._status = status;
this._metadata.updatedAt = new Date().toISOString();
}
/**
* Get resource properties
*/
getProperties() {
return this._properties;
}
/**
* Update resource properties
*/
updateProperties(properties) {
const newProperties = { ...this._properties, ...properties };
// Validate before updating
try {
this.schema.parse(newProperties);
this._properties = newProperties;
this._metadata.updatedAt = new Date().toISOString();
this._metadata.version++;
return { valid: true };
}
catch (error) {
if (error instanceof z.ZodError) {
return {
valid: false,
errors: error.errors.map(e => ({
path: e.path.join('.'),
message: e.message
}))
};
}
return {
valid: false,
errors: [{ path: '', message: 'Unknown validation error' }]
};
}
}
}
//# sourceMappingURL=base.js.map