import * as path from 'path';
import { fileURLToPath } from 'url';
import { XmiParser } from './parser/xmi-parser.js';
import { XmiModel } from './model/xmi-model.js';
import { startServer } from './server.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
async function main(): Promise<void> {
// Get XMI file path from environment or use default
const xmiPath = process.env.XMI_FILE_PATH ||
path.join(__dirname, '..', 'docs', 'MTConnectSysMLModel.xml');
console.error(`Loading XMI from: ${xmiPath}`);
// Parse XMI file
const parser = new XmiParser();
const startTime = Date.now();
try {
const index = await parser.parse(xmiPath);
const parseTime = Date.now() - startTime;
// Create model
const model = new XmiModel(index);
// Log statistics
const stats = model.getStatistics();
console.error(`Loaded in ${parseTime}ms:`);
console.error(` - ${stats.packageCount} packages`);
console.error(` - ${stats.classCount} classes`);
console.error(` - ${stats.enumerationCount} enumerations`);
console.error(` - ${stats.dataTypeCount} data types`);
console.error(` - ${stats.propertyCount} properties`);
console.error(` - ${stats.associationCount} associations`);
// Start MCP server
await startServer(model);
} catch (error) {
console.error('Failed to start server:', error);
process.exit(1);
}
}
main();