veas
Version:
Veas CLI - Command-line interface for Veas platform
91 lines (89 loc) • 2.7 kB
JavaScript
import { spinner } from '@clack/prompts';
import * as dotenv from 'dotenv';
import pc from 'picocolors';
import { AuthManager } from '../auth/auth-manager.js';
import { DirectMCPServer } from '../mcp/direct-server.js';
import { logger } from '../utils/logger.js';
dotenv.config({ path: '.env.local' });
dotenv.config();
export async function serve(options) {
if (options.showConfig) {
const config = {
mcpServers: {
veas: {
command: 'veas',
args: ['serve'],
},
},
};
console.log(JSON.stringify(config, null, 2));
return;
}
const isMCPMode = process.env.MCP_MODE === 'true' || !process.stdout.isTTY;
if (isMCPMode) {
const originalLog = console.log;
console.log = (...args) => {
const msg = args.join(' ');
if (!msg.trim().startsWith('{')) {
process.stderr.write(`${msg}\n`);
}
else {
originalLog(...args);
}
};
console.error = (...args) => process.stderr.write(`${args.join(' ')}\n`);
}
const s = isMCPMode ? null : spinner();
if (!isMCPMode) {
s.start('Starting MCP server...');
}
try {
const authManager = AuthManager.getInstance();
const isAuthenticated = await authManager.isAuthenticated();
if (!isAuthenticated) {
if (!isMCPMode) {
s.stop(pc.red('Not authenticated'));
logger.info(pc.yellow('Please run "veas login" first'));
}
process.exit(1);
}
const server = new DirectMCPServer({
port: Number.parseInt(options.port, 10),
});
await server.initialize();
if (!isMCPMode) {
s.stop(pc.green('MCP server initialized'));
logger.info(pc.cyan(`
Veas MCP Server (Direct Connection)
===================================
Port: ${options.port}
Cache: Disabled
Mode: Direct MCP connection
The server is running in stdio mode for MCP protocol.
To use with Claude Desktop or other MCP clients, configure:
{
"mcpServers": {
"veas": {
"command": "veas",
"args": ["serve"]
}
}
}
`));
}
await server.start();
process.on('SIGINT', async () => {
logger.info(pc.yellow('\nShutting down...'));
await server.stop();
process.exit(0);
});
}
catch (error) {
if (!isMCPMode && s) {
s.stop(pc.red('Failed to start server'));
}
logger.error(error.message);
process.exit(1);
}
}
//# sourceMappingURL=serve.js.map