#!/usr/bin/env node
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { Auth } from './auth.js';
import { Accounts } from './accounts.js';
import { createServer } from './server.js';
import { serve } from './serve.js';
const auth = new Auth();
try {
if (
process.argv[2] === 'login' &&
(process.argv.length === 3 || (process.argv.length === 4 && process.argv[3] === '--manual'))
) {
await auth.login({ manual: process.argv[3] === '--manual' });
} else if (process.argv[2] === 'serve' && process.argv.length === 3) {
process.exitCode = await serve();
} else if (process.argv.length === 2) {
const colab = new Accounts();
const server = createServer(colab);
const shutdown = async () => {
colab.close();
await server.close();
};
process.once('SIGINT', () => void shutdown());
process.once('SIGTERM', () => void shutdown());
process.stdin.once('end', () => colab.close());
await server.connect(new StdioServerTransport());
} else {
throw new Error('usage: colab-mcp [login [--manual] | serve]');
}
} catch (error) {
console.error(error.message);
process.exitCode = 1;
}