// Copyright (C) 2024-2026 Petr Mironychev // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include namespace QodeAssist::PluginLLMCore { struct ImageAttachment { QString data; // Base64 encoded data or URL QString mediaType; // e.g., "image/png", "image/jpeg", "image/webp", "image/gif" bool isUrl = false; // true if data is URL, false if base64 bool operator==(const ImageAttachment &) const = default; }; struct ToolCall { QString id; QString name; QJsonObject arguments; bool operator==(const ToolCall &) const = default; }; struct Message { QString role; QString content; QString signature; bool isThinking = false; bool isRedacted = false; std::optional> images; QVector toolCalls; QString toolCallId; QString toolName; // clang-format off bool operator==(const Message&) const = default; // clang-format on }; struct FileMetadata { QString filePath; QString content; bool operator==(const FileMetadata &) const = default; }; struct ContextData { std::optional systemPrompt; std::optional prefix; std::optional suffix; std::optional fileContext; std::optional> history; std::optional> filesMetadata; bool operator==(const ContextData &) const = default; }; } // namespace QodeAssist::PluginLLMCore