fix(web,gateway): close P3 re-review#4 findings — sanitize all executor catches; lock pre-start turn boundary (wire turnId deferred)

This commit is contained in:
shaggy (mosaic-dev box)
2026-08-10 16:07:12 -05:00
parent d46a2d675a
commit 4aaf41dd1a
4 changed files with 128 additions and 13 deletions
@@ -159,7 +159,7 @@ export class CommandExecutorService {
};
}
} catch (err) {
this.logger.error(`Command /${command} failed: ${err}`);
this.logger.error(`Command /${command} failed`, err);
return {
command,
conversationId,
@@ -341,11 +341,11 @@ export class CommandExecutorService {
data: { agentId: newAgent.id, agentName: newAgent.name },
};
} catch (err) {
this.logger.error(`Failed to create agent: ${err}`);
this.logger.error(`Failed to create agent "${namePart}" for user ${userId}`, err);
return {
command: 'agent',
success: false,
message: `Failed to create agent: ${String(err)}`,
message: 'Failed to create agent due to an internal error.',
conversationId,
};
}
@@ -396,11 +396,11 @@ export class CommandExecutorService {
data: { agentId: agentConfig.id, agentName: agentConfig.name, model: agentConfig.model },
};
} catch (err) {
this.logger.error(`Failed to switch agent "${agentName}": ${err}`);
this.logger.error(`Failed to switch agent "${agentName}"`, err);
return {
command: 'agent',
success: false,
message: `Failed to switch agent: ${String(err)}`,
message: 'Failed to switch agent due to an internal error.',
conversationId,
};
}
@@ -613,11 +613,12 @@ export class CommandExecutorService {
message: `MCP server "${serverName}" reconnected successfully.`,
};
} catch (err) {
this.logger.error(`Failed to reconnect MCP server "${serverName}"`, err);
return {
command: 'mcp',
conversationId,
success: false,
message: `Failed to reconnect MCP server "${serverName}": ${err instanceof Error ? err.message : String(err)}`,
message: `Failed to reconnect MCP server "${serverName}" due to an internal error.`,
};
}
}