start method
Starts the dashboard HTTP server.
Implementation
Future<void> start() async {
// Initialize Jaspr before using renderComponent
Jaspr.initializeApp();
final router = Router();
// API endpoints
router.get('/api/agents', _handleAgentsApi);
router.get('/api/project', _handleProjectApi);
// Serve the Jaspr-rendered dashboard
router.get('/', _handleDashboard);
// Add CORS and logging middleware
final handler = const shelf.Pipeline()
.addMiddleware(_corsMiddleware())
.addMiddleware(
shelf.logRequests(
logger: (msg, isError) {
if (isError) {
logger.err(msg);
} else {
logger.detail(msg);
}
},
),
)
.addHandler(router.call);
_server = await shelf_io.serve(handler, InternetAddress.loopbackIPv4, port);
logger.success('Dashboard running at http://localhost:$port');
logger.info('Press Ctrl+C to stop.');
}