30 virtual QJsonObject
handleCommand(
const QString &command,
const QJsonObject ¶ms,
const QJsonValue &requestId) = 0;
34 const QJsonValue &requestId = QJsonValue(),
36 QJsonObject
createSuccessResponse(
const QJsonObject &result = {},
const QJsonValue &requestId = QJsonValue())
const;
40 bool validateElementId(
int elementId,
const QString ¶mName, QString &errorMsg)
const;
43 bool validateNumeric(
const QJsonValue &value,
const QString ¶mName, QString &errorMsg)
const;
55 QJsonObject
tryCommand(Fn &&fn,
const QString &action,
const QJsonValue &requestId = QJsonValue())
58 return std::forward<Fn>(fn)();
59 }
catch (
const std::exception &e) {
Numeric error codes returned in MCP responses, per JSON-RPC 2.0.
bool validatePortRange(GraphicElement *element, int portIndex, bool isOutput, const QString ¶mName, QString &errorMsg) const
const MCPValidator * m_validator
QString availableOutputPorts(GraphicElement *element) const
QJsonObject createSuccessResponse(const QJsonObject &result={}, const QJsonValue &requestId=QJsonValue()) const
QJsonObject tryCommand(Fn &&fn, const QString &action, const QJsonValue &requestId=QJsonValue())
Wraps fn in a try/catch, returning an error response on exception.
bool validateElementId(int elementId, const QString ¶mName, QString &errorMsg) const
QString availablePorts(GraphicElement *element, bool isOutput) const
virtual ~BaseHandler()=default
GraphicElement * validatedElement(const QJsonObject ¶ms, const QString ¶mName, QString &errorMsg)
Validates paramName in params, looks up the element, and returns it.
virtual QJsonObject handleCommand(const QString &command, const QJsonObject ¶ms, const QJsonValue &requestId)=0
bool validateNonNegativeInteger(const QJsonValue &value, const QString ¶mName, QString &errorMsg) const
BaseHandler(MainWindow *mainWindow, const MCPValidator *validator)
QJsonObject createErrorResponse(const QString &error, const QJsonValue &requestId=QJsonValue(), int code=JsonRpcError::InternalError) const
MainWindow * m_mainWindow
bool outputPortByLabel(GraphicElement *element, const QString &label, int &portIndex, QString &errorMsg) const
bool validateParameters(const QJsonObject ¶ms, const QStringList &required) const
bool inputPortByLabel(GraphicElement *element, const QString &label, int &portIndex, QString &errorMsg) const
bool validatePositiveInteger(const QJsonValue &value, const QString ¶mName, QString &errorMsg) const
QString availableInputPorts(GraphicElement *element) const
bool validateNonEmptyString(const QJsonValue &value, const QString ¶mName, QString &errorMsg) const
bool validateNumeric(const QJsonValue &value, const QString ¶mName, QString &errorMsg) const
Abstract base class for all graphical circuit elements in wiRedPanda.
JSON Schema validator for MCP commands and responses using native json-schema-validator.
The top-level application window hosting the tab bar, menus, element palette, and editor.
Main circuit editing scene.
constexpr int OperationFailed
Generic Qt API / handler operation failure (catch-all for tryCommand).
constexpr int InternalError
Internal JSON-RPC error (last-resort).