ruvnet/ruflo · error
-32603
-32603
Error message
Internal error
What it means
Express error-handling middleware caught an unhandled exception from any route handler; the server logs it, increments its error counter, and returns a sanitized JSON-RPC -32603 without internal detail. It is the transport's last-resort wrapper — the real cause is in the logged 'Express error' entry.
Source
Thrown at v3/@claude-flow/mcp/src/transport/http.ts:334
transport: 'http',
capabilities: {
jsonrpc: true,
websocket: true,
},
});
});
this.app.use((req, res) => {
res.status(404).json({
error: 'Not found',
path: req.path,
});
});
this.app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
this.logger.error('Express error', { error: err });
this.errors++;
res.status(500).json({
jsonrpc: '2.0',
id: null,
error: { code: -32603, message: 'Internal error' },
});
});
}
private setupWebSocketHandlers(): void {
if (!this.wss) return;
// SECURITY: Handle WebSocket authentication via upgrade request
this.wss.on('connection', (ws, req) => {
// Validate authentication if enabled
if (this.config.auth?.enabled) {
const url = new URL(req.url || '', `http://${req.headers.host}`);
const token = url.searchParams.get('token') || req.headers['authorization']?.replace(/^Bearer\s+/i, '');
if (!token) {View on GitHub (pinned to fa13ee4ad6)
Solutions
- Check server logs for the underlying exception and fix the root cause.
- Add structured error handling around the handler so failures return a descriptive error instead of a generic 500.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at v3/@claude-flow/mcp/src/transport/http.ts:334 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/9c4724c242955b4e.
Report an issue: GitHub.