canvas-website/multmux/packages/cli/src/commands/list.ts

39 lines
1.2 KiB
TypeScript

import fetch from 'node-fetch';
import chalk from 'chalk';
import ora from 'ora';
export async function listSessions(options: { server?: string }): Promise<void> {
const serverUrl = options.server || 'http://localhost:3000';
const spinner = ora('Fetching sessions...').start();
try {
const response = await fetch(`${serverUrl}/api/sessions`);
if (!response.ok) {
throw new Error(`Failed to fetch sessions: ${response.statusText}`);
}
const data: any = await response.json();
spinner.stop();
if (data.sessions.length === 0) {
console.log(chalk.yellow('No active sessions found.'));
return;
}
console.log(chalk.bold(`\nActive Sessions (${data.sessions.length}):\n`));
data.sessions.forEach((session: any) => {
console.log(chalk.cyan(` ${session.name}`));
console.log(` ID: ${chalk.gray(session.id)}`);
console.log(` Clients: ${session.activeClients}`);
console.log(` Created: ${new Date(session.createdAt).toLocaleString()}`);
console.log('');
});
} catch (error) {
spinner.fail('Failed to fetch sessions');
console.error(chalk.red((error as Error).message));
process.exit(1);
}
}