chat: require Qt 6.8 and fix #includes (#3498)

Signed-off-by: Jared Van Bortel <jared@nomic.ai>
This commit is contained in:
Jared Van Bortel 2025-02-18 13:59:50 -05:00 committed by GitHub
parent d8c04cead8
commit 29f29773af
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
52 changed files with 261 additions and 148 deletions

View File

@ -104,7 +104,7 @@ elseif (GPT4ALL_USE_QTPDF MATCHES "^(ON|AUTO)$")
set(GPT4ALL_USING_QTPDF ON)
list(APPEND GPT4ALL_QT_COMPONENTS Pdf)
endif()
find_package(Qt6 6.5 COMPONENTS ${GPT4ALL_QT_COMPONENTS} REQUIRED)
find_package(Qt6 6.8 COMPONENTS ${GPT4ALL_QT_COMPONENTS} REQUIRED)
if (QT_KNOWN_POLICY_QTP0004)
qt_policy(SET QTP0004 NEW) # generate extra qmldir files on Qt 6.8+

View File

@ -7,24 +7,26 @@
#include "toolcallparser.h"
#include "toolmodel.h"
#include <QBuffer>
#include <QByteArray>
#include <QDataStream>
#include <QDebug>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QFile>
#include <QFileInfo>
#include <QIODevice>
#include <QLatin1String>
#include <QMap>
#include <QRegularExpression>
#include <QString>
#include <QVariant>
#include <Qt>
#include <QtAssert>
#include <QtLogging>
#include <optional>
#include <utility>
using namespace ToolEnums;
Chat::Chat(QObject *parent)
: QObject(parent)
, m_id(Network::globalInstance()->generateUniqueId())

View File

@ -3,21 +3,26 @@
#include "chatllm.h"
#include "chatmodel.h"
#include "database.h" // IWYU pragma: keep
#include "localdocsmodel.h" // IWYU pragma: keep
#include "database.h"
#include "localdocsmodel.h"
#include "modellist.h"
#include "tool.h"
#include <QDateTime>
#include <QList>
#include <QObject>
#include <QQmlEngine>
#include <QQmlEngine> // IWYU pragma: keep
#include <QString>
#include <QStringList> // IWYU pragma: keep
#include <QStringView>
#include <QtGlobal>
#include <QUrl>
#include <QVariant>
#include <QtTypes>
// IWYU pragma: no_forward_declare LocalDocsCollectionsModel
// IWYU pragma: no_forward_declare ToolCallInfo
class QDataStream;
class Chat : public QObject
{
Q_OBJECT

View File

@ -2,6 +2,9 @@
#include "utils.h"
#include <fmt/format.h>
#include <QAnyStringView>
#include <QCoreApplication>
#include <QDebug>
#include <QGuiApplication>
@ -9,15 +12,17 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QLatin1String>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QStringView>
#include <QThread>
#include <QUrl>
#include <QUtf8StringView>
#include <QUtf8StringView> // IWYU pragma: keep
#include <QVariant>
#include <QXmlStreamReader>
#include <Qt>
#include <QtGlobal>
#include <QtAssert>
#include <QtLogging>
#include <expected>
@ -29,6 +34,7 @@ using namespace Qt::Literals::StringLiterals;
//#define DEBUG
ChatAPI::ChatAPI()
: QObject(nullptr)
, m_modelName("gpt-3.5-turbo")

View File

@ -3,10 +3,11 @@
#include <gpt4all-backend/llmodel.h>
#include <QByteArray> // IWYU pragma: keep
#include <QByteArray>
#include <QNetworkReply>
#include <QObject>
#include <QString>
#include <QtPreprocessorSupport>
#include <cstddef>
#include <cstdint>
@ -17,9 +18,11 @@
#include <unordered_map>
#include <vector>
// IWYU pragma: no_forward_declare QByteArray
class ChatAPI;
class QNetworkAccessManager;
class ChatAPI;
class ChatAPIWorker : public QObject {
Q_OBJECT
public:

View File

@ -1,23 +1,24 @@
#include "chatlistmodel.h"
#include "database.h" // IWYU pragma: keep
#include "mysettings.h"
#include <QCoreApplication>
#include <QDataStream>
#include <QDir>
#include <QElapsedTimer>
#include <QEvent>
#include <QFile>
#include <QFileInfo>
#include <QGlobalStatic>
#include <QGuiApplication>
#include <QIODevice>
#include <QSettings>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <Qt>
#include <QtTypes>
#include <algorithm>
#include <memory>
static constexpr quint32 CHAT_FORMAT_MAGIC = 0xF5D553CC;
static constexpr qint32 CHAT_FORMAT_VERSION = 12;

View File

@ -7,17 +7,20 @@
#include <QAbstractListModel>
#include <QByteArray>
#include <QDate>
#include <QDebug>
#include <QHash>
#include <QList>
#include <QMutex>
#include <QObject>
#include <QString>
#include <QThread>
#include <QVariant>
#include <QVector>
#include <QVector> // IWYU pragma: keep
#include <Qt>
#include <QtGlobal>
#include <QtAssert>
#include <QtLogging>
#include <QtPreprocessorSupport>
#include <memory>

View File

@ -15,32 +15,40 @@
#include <minja/minja.hpp>
#include <nlohmann/json.hpp>
#include <QChar>
#include <QDataStream>
#include <QDebug>
#include <QFile>
#include <QGlobalStatic>
#include <QIODevice>
#include <QIODevice> // IWYU pragma: keep
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QMap>
#include <QMutex>
#include <QMutex> // IWYU pragma: keep
#include <QMutexLocker> // IWYU pragma: keep
#include <QRegularExpression>
#include <QRegularExpressionMatch>
#include <QRegularExpression> // IWYU pragma: keep
#include <QRegularExpressionMatch> // IWYU pragma: keep
#include <QSet>
#include <QStringView>
#include <QTextStream>
#include <QUrl>
#include <QVariant>
#include <QWaitCondition>
#include <Qt>
#include <QtAssert>
#include <QtLogging>
#include <QtTypes> // IWYU pragma: keep
#include <algorithm>
#include <chrono>
#include <cmath>
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <ctime>
#include <exception>
#include <functional>
#include <iomanip>
#include <limits>
#include <optional>

View File

@ -2,7 +2,7 @@
#define CHATLLM_H
#include "chatmodel.h"
#include "database.h" // IWYU pragma: keep
#include "database.h"
#include "modellist.h"
#include <gpt4all-backend/llmodel.h>
@ -10,29 +10,30 @@
#include <QByteArray>
#include <QElapsedTimer>
#include <QFileInfo>
#include <QList> // IWYU pragma: keep
#include <QList>
#include <QObject>
#include <QPointer>
#include <QString>
#include <QStringList> // IWYU pragma: keep
#include <QStringView>
#include <QThread>
#include <QVariantMap> // IWYU pragma: keep
#include <QtGlobal>
#include <QtNumeric>
#include <atomic>
#include <cstdint>
#include <memory>
#include <optional>
#include <span>
#include <string>
#include <string_view>
#include <variant>
#include <vector>
using namespace Qt::Literals::StringLiterals;
class ChatViewResponseHandler;
class ChatLLM;
class QDataStream;
// NOTE: values serialized to disk, do not change or reuse
enum class LLModelTypeV0 { // chat versions 2-5
MPT = 0,
@ -89,9 +90,6 @@ inline LLModelTypeV1 parseLLModelTypeV0(int v0)
}
}
class ChatLLM;
class ChatModel;
struct LLModelInfo {
std::unique_ptr<LLModel> model;
QFileInfo fileInfo;

View File

@ -2,9 +2,11 @@
#include <QDebug>
#include <QMap>
#include <QtGlobal>
#include <QTextStream>
#include <QtLogging>
#include <exception>
QList<ResultInfo> ChatItem::consolidateSources(const QList<ResultInfo> &sources)
{

View File

@ -4,32 +4,41 @@
#include "database.h"
#include "tool.h"
#include "toolcallparser.h"
#include "utils.h"
#include "utils.h" // IWYU pragma: keep
#include "xlsxtomd.h"
#include <fmt/format.h>
#include <QApplication>
#include <QAbstractListModel>
#include <QBuffer>
#include <QByteArray>
#include <QClipboard>
#include <QDataStream>
#include <QJsonDocument>
#include <QFileInfo>
#include <QGuiApplication>
#include <QIODevice>
#include <QHash>
#include <QList>
#include <QMutex>
#include <QMutexLocker> // IWYU pragma: keep
#include <QObject>
#include <QPair>
#include <QPair> // IWYU pragma: keep
#include <QString>
#include <QStringList> // IWYU pragma: keep
#include <QUrl>
#include <QVariant>
#include <QVector>
#include <Qt>
#include <QtGlobal>
#include <QtAssert>
#include <QtPreprocessorSupport>
#include <QtTypes>
#include <algorithm>
#include <iterator>
#include <list>
#include <optional>
#include <ranges>
#include <span>
#include <stdexcept>
#include <utility>
#include <vector>

View File

@ -1,29 +1,32 @@
#include "chatviewtextprocessor.h"
#include <QAbstractTextDocumentLayout>
#include <QBrush>
#include <QChar>
#include <QClipboard>
#include <QDebug>
#include <QFlag>
#include <QFont>
#include <QFontMetricsF>
#include <QGuiApplication>
#include <QList>
#include <QPainter>
#include <QList> // IWYU pragma: keep
#include <QPair>
#include <QQuickTextDocument>
#include <QRegularExpression>
#include <QStringList>
#include <QTextBlock>
#include <QTextCharFormat>
#include <QStringList> // IWYU pragma: keep
#include <QTextBlock> // IWYU pragma: keep
#include <QTextCharFormat> // IWYU pragma: keep
#include <QTextCursor>
#include <QTextDocument>
#include <QTextDocumentFragment>
#include <QTextFrame>
#include <QTextFrameFormat>
#include <QTextFrame> // IWYU pragma: keep
#include <QTextFrameFormat> // IWYU pragma: keep
#include <QTextTableCell>
#include <QVariant>
#include <Qt>
#include <QtGlobal>
#include <QtAssert>
#include <QtLogging>
#include <algorithm>
#include <utility>
enum Language {
None,

View File

@ -3,18 +3,15 @@
#include <QColor>
#include <QObject>
#include <QQmlEngine>
#include <QQuickTextDocument> // IWYU pragma: keep
#include <QRectF>
#include <QSizeF>
#include <QQmlEngine> // IWYU pragma: keep
#include <QQuickTextDocument>
#include <QString>
#include <QSyntaxHighlighter>
#include <QTextObjectInterface>
#include <QVector>
#include <QVector> // IWYU pragma: keep
#include <QtTypes>
// IWYU pragma: no_forward_declare QQuickTextDocument
class QPainter;
class QTextDocument;
class QTextFormat;
struct CodeColors {
Q_GADGET

View File

@ -1,12 +1,16 @@
#include "codeinterpreter.h"
#include <QJSEngine>
#include <QJSValue>
#include <QStringList>
#include <QList>
#include <QStringList> // IWYU pragma: keep
#include <QThread>
#include <QVariant>
#include <Qt>
using namespace Qt::Literals::StringLiterals;
CodeInterpreter::CodeInterpreter()
: Tool()
, m_error(ToolEnums::Error::NoError)

View File

@ -4,11 +4,13 @@
#include "tool.h"
#include "toolcallparser.h"
#include <QJSEngine>
#include <QObject>
#include <QString>
#include <QtGlobal>
#include <QThread>
#include <QtAssert>
class QJSEngine;
class JavaScriptConsoleCapture : public QObject
{

View File

@ -1,19 +1,21 @@
#include "database.h"
#include "mysettings.h"
#include "utils.h"
#include "utils.h" // IWYU pragma: keep
#include <duckx/duckx.hpp>
#include <fmt/format.h>
#include <usearch/index.hpp>
#include <usearch/index_plugins.hpp>
#include <QByteArrayView>
#include <QDebug>
#include <QDir>
#include <QDirIterator>
#include <QFile>
#include <QFileSystemWatcher>
#include <QFlags>
#include <QIODevice>
#include <QKeyValueIterator>
#include <QRegularExpression>
#include <QSqlError>
#include <QSqlQuery>
@ -22,8 +24,9 @@
#include <QMap>
#include <QUtf8StringView>
#include <QVariant>
#include <Qt>
#include <QtLogging>
#include <QtMinMax>
#include <QtTypes>
#include <algorithm>
#include <cmath>
@ -46,6 +49,7 @@ namespace us = unum::usearch;
//#define DEBUG
//#define DEBUG_EXAMPLE
namespace {
/* QFile that checks input for binary data. If seen, it fails the read and returns true

View File

@ -1,7 +1,7 @@
#ifndef DATABASE_H
#define DATABASE_H
#include "embllm.h" // IWYU pragma: keep
#include "embllm.h"
#include <QByteArray>
#include <QChar>
@ -15,11 +15,11 @@
#include <QSet>
#include <QSqlDatabase>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <QThread>
#include <QUrl>
#include <QVector>
#include <QtGlobal>
#include <QVector> // IWYU pragma: keep
#include <QtAssert>
#include <atomic>
#include <cstddef>
@ -28,7 +28,7 @@
#include <memory>
#include <optional>
#include <utility>
#include <vector>
#include <vector> // IWYU pragma: keep
using namespace Qt::Literals::StringLiterals;
@ -39,6 +39,7 @@ class QSqlQuery;
class QTextStream;
class QTimer;
/* Version 0: GPT4All v2.4.3, full-text search
* Version 1: GPT4All v2.5.3, embeddings in hsnwlib
* Version 2: GPT4All v3.0.0, embeddings in sqlite

View File

@ -10,32 +10,37 @@
#include <QDebug>
#include <QGlobalStatic>
#include <QGuiApplication>
#include <QIODevice>
#include <QIODevice> // IWYU pragma: keep
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QKeyValueIterator>
#include <QLocale>
#include <QNetworkRequest>
#include <QPair>
#include <QPair> // IWYU pragma: keep
#include <QRegularExpression>
#include <QRegularExpressionMatch>
#include <QSettings>
#include <QSslConfiguration>
#include <QSslSocket>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <QTextStream>
#include <QUrl>
#include <QVariant>
#include <QVector>
#include <QVector> // IWYU pragma: keep
#include <Qt>
#include <QtAssert>
#include <QtLogging>
#include <QtMinMax>
#include <algorithm>
#include <compare>
#include <cstddef>
#include <utility>
using namespace Qt::Literals::StringLiterals;
class MyDownload: public Download { };
Q_GLOBAL_STATIC(MyDownload, downloadInstance)
Download *Download::globalInstance()

View File

@ -13,10 +13,14 @@
#include <QSslError>
#include <QString>
#include <QThread>
#include <QtGlobal>
#include <QtTypes>
// IWYU pragma: no_forward_declare QFile
// IWYU pragma: no_forward_declare QList
// IWYU pragma: no_forward_declare QSslError
class QByteArray;
struct ReleaseInfo {
Q_GADGET
Q_PROPERTY(QString version MEMBER version)

View File

@ -1,35 +1,35 @@
#include "embllm.h"
#include "modellist.h"
#include "mysettings.h"
#include <gpt4all-backend/llmodel.h>
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QFileInfo>
#include <QGuiApplication>
#include <QIODevice>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QList>
#include <QMutexLocker>
#include <QMutexLocker> // IWYU pragma: keep
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QUrl>
#include <Qt>
#include <QtGlobal>
#include <QtAssert>
#include <QtLogging>
#include <exception>
#include <string>
#include <utility>
#include <vector>
using namespace Qt::Literals::StringLiterals;
static const QString EMBEDDING_MODEL_NAME = u"nomic-embed-text-v1.5"_s;
static const QString LOCAL_EMBEDDING_MODEL = u"nomic-embed-text-v1.5.f16.gguf"_s;

View File

@ -5,10 +5,10 @@
#include <QMutex>
#include <QObject>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <QThread>
#include <QVariant>
#include <QVector>
#include <QVector> // IWYU pragma: keep
#include <atomic>
#include <vector>
@ -16,6 +16,7 @@
class LLModel;
class QNetworkAccessManager;
struct EmbeddingChunk {
QString model; // TODO(jared): use to select model
int folder_id;

View File

@ -1,16 +1,11 @@
#include "jinja_helpers.h"
#include "utils.h"
#include <fmt/format.h>
#include <QString>
#include <QUrl>
#include <iterator>
#include <map>
#include <ranges>
#include <vector>
#include <string>
#include <utility>
namespace views = std::views;
using json = nlohmann::ordered_json;

View File

@ -5,7 +5,11 @@
#include <nlohmann/json.hpp>
#include <QtGlobal>
#include <QtTypes> // IWYU pragma: keep
// IWYU pragma: no_forward_declare MessageItem
// IWYU pragma: no_forward_declare PromptAttachment
// IWYU pragma: no_forward_declare ResultInfo
using json = nlohmann::ordered_json;

View File

@ -2,6 +2,9 @@
#include "jinja_replacements.h"
#include <utility>
// This is a list of prompt templates known to GPT4All and their associated replacements which are automatically used
// instead when loading the chat template from GGUF. These exist for two primary reasons:
// - HuggingFace model authors make ugly chat templates because they do not expect the end user to see them;

View File

@ -12,6 +12,9 @@
#include <QSettings>
#include <QUrl>
#include <QtLogging>
#include <QtSystemDetection>
#include <string>
#ifdef GPT4ALL_OFFLINE_INSTALLER
# include <QDesktopServices>
@ -25,6 +28,7 @@
using namespace Qt::Literals::StringLiterals;
class MyLLM: public LLM { };
Q_GLOBAL_STATIC(MyLLM, llmInstance)
LLM *LLM::globalInstance()

View File

@ -3,7 +3,8 @@
#include <QObject>
#include <QString>
#include <QtGlobal>
#include <QtTypes>
class LLM : public QObject
{

View File

@ -5,10 +5,14 @@
#include "mysettings.h"
#include <QCoreApplication>
#include <QDebug>
#include <QGlobalStatic>
#include <QGuiApplication>
#include <QList>
#include <QUrl>
#include <Qt>
#include <QtLogging>
class MyLocalDocs: public LocalDocs { };
Q_GLOBAL_STATIC(MyLocalDocs, localDocsInstance)

View File

@ -2,11 +2,14 @@
#define LOCALDOCS_H
#include "database.h"
#include "localdocsmodel.h" // IWYU pragma: keep
#include "localdocsmodel.h"
#include <QObject>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
// IWYU pragma: no_forward_declare LocalDocsModel
class LocalDocs : public QObject
{

View File

@ -5,11 +5,11 @@
#include <QDateTime>
#include <QMap>
#include <QVector>
#include <QtGlobal>
#include <QVector> // IWYU pragma: keep
#include <utility>
LocalDocsCollectionsModel::LocalDocsCollectionsModel(QObject *parent)
: QSortFilterProxyModel(parent)
{

View File

@ -4,17 +4,19 @@
#include "database.h"
#include <QAbstractListModel>
#include <QByteArray>
#include <QHash>
#include <QList>
#include <QObject>
#include <QObject> // IWYU pragma: keep
#include <QSortFilterProxyModel>
#include <QString>
#include <QVariant>
#include <Qt>
#include <functional>
class QByteArray;
class QVariant;
template <typename Key, typename T> class QHash;
class LocalDocsCollectionsModel : public QSortFilterProxyModel
{
Q_OBJECT

View File

@ -2,9 +2,10 @@
#include <QDateTime>
#include <QDebug>
#include <QFlags>
#include <QGlobalStatic>
#include <QIODevice>
#include <QMutexLocker>
#include <QMutexLocker> // IWYU pragma: keep
#include <QStandardPaths>
#include <cstdio>
@ -13,6 +14,7 @@
using namespace Qt::Literals::StringLiterals;
class MyLogger: public Logger { };
Q_GLOBAL_STATIC(MyLogger, loggerInstance)
Logger *Logger::globalInstance()

View File

@ -6,6 +6,7 @@
#include <QString>
#include <QtLogging>
class Logger {
public:
explicit Logger();

View File

@ -2,6 +2,7 @@
#include <Cocoa/Cocoa.h>
void MacOSDock::showIcon()
{
[[NSApplication sharedApplication] setActivationPolicy:NSApplicationActivationPolicyRegular];

View File

@ -12,18 +12,24 @@
#include <gpt4all-backend/llmodel.h>
#include <singleapplication.h>
#include <QByteArray>
#include <QCoreApplication>
#include <QFont>
#include <QFontDatabase>
#include <QList>
#include <QObject>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QQuickWindow>
#include <QSettings>
#include <QString>
#include <QStringList>
#include <QUrl>
#include <QVariant>
#include <QWindow>
#include <Qt>
#include <QtAssert>
#include <QtSystemDetection>
#if G4A_CONFIG(force_d3d12)
# include <QSGRendererInterface>

View File

@ -9,9 +9,11 @@
#include <QChar>
#include <QCoreApplication>
#include <QCryptographicHash>
#include <QDebug>
#include <QDir>
#include <QDirIterator>
#include <QEvent>
#include <QEventLoop>
#include <QFile>
#include <QFileInfo>
@ -29,14 +31,15 @@
#include <QSslConfiguration>
#include <QSslSocket>
#include <QStandardPaths>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <QTextStream>
#include <QTimer>
#include <QUrl>
#include <QtAssert>
#include <QtLogging>
#include <QtPreprocessorSupport>
#include <algorithm>
#include <cstddef>
#include <iterator>
#include <optional>
#include <string>

View File

@ -5,25 +5,29 @@
#include <QByteArray>
#include <QDateTime>
#include <QHash>
#include <QLatin1StringView>
#include <QLatin1StringView> // IWYU pragma: keep
#include <QList>
#include <QMutex>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QObject>
#include <QPair>
#include <QQmlEngine>
#include <QPair> // IWYU pragma: keep
#include <QQmlEngine> // IWYU pragma: keep
#include <QSortFilterProxyModel>
#include <QSslError>
#include <QString>
#include <QVariant>
#include <QVector>
#include <QVector> // IWYU pragma: keep
#include <Qt>
#include <QtGlobal>
#include <QtTypes>
#include <optional>
#include <utility>
// IWYU pragma: no_forward_declare QObject
// IWYU pragma: no_forward_declare QSslError
class QUrl;
using namespace Qt::Literals::StringLiterals;

View File

@ -11,22 +11,27 @@
#include <QFileInfo>
#include <QGlobalStatic>
#include <QGuiApplication>
#include <QIODevice>
#include <QIODevice> // IWYU pragma: keep
#include <QMap>
#include <QMetaObject>
#include <QStandardPaths>
#include <QThread>
#include <QUrl>
#include <QVariant>
#include <QtLogging>
#include <QtAssert>
#include <algorithm>
#include <string>
#include <thread>
#include <vector>
#if !(defined(Q_OS_MAC) && defined(__aarch64__))
#include <cstring>
#endif
using namespace Qt::Literals::StringLiterals;
// used only for settings serialization, do not translate
static const QStringList suggestionModeNames { "LocalDocsOnly", "On", "Off" };
static const QStringList chatThemeNames { "Light", "Dark", "LegacyDark" };

View File

@ -4,20 +4,24 @@
#include "modellist.h" // IWYU pragma: keep
#include <QDateTime>
#include <QLatin1StringView>
#include <QLatin1StringView> // IWYU pragma: keep
#include <QList>
#include <QModelIndex>
#include <QObject>
#include <QSettings>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <QTranslator>
#include <QVector>
#include <QVariant>
#include <cstdint>
#include <memory>
#include <optional>
// IWYU pragma: no_forward_declare QModelIndex
class QLocale;
namespace MySettingsEnums {
Q_NAMESPACE

View File

@ -8,7 +8,6 @@
#include "localdocsmodel.h"
#include "modellist.h"
#include "mysettings.h"
#include "utils.h"
#include <gpt4all-backend/llmodel.h>
@ -29,7 +28,6 @@
#include <QSslSocket>
#include <QSysInfo>
#include <Qt>
#include <QtGlobal>
#include <QtLogging>
#include <QUrl>
#include <QUuid>
@ -49,6 +47,7 @@ using namespace Qt::Literals::StringLiterals;
#define STR_(x) #x
#define STR(x) STR_(x)
static const char MIXPANEL_TOKEN[] = "ce362e568ddaee16ed243eaffb5860a2";
#ifdef __clang__

View File

@ -11,7 +11,14 @@
#include <QSslError>
#include <QString>
#include <QVariant>
#include <QVector>
#include <QVariantMap> // IWYU pragma: keep
#include <QVector> // IWYU pragma: keep
// IWYU pragma: no_forward_declare QByteArray
// IWYU pragma: no_forward_declare QNetworkReply
// IWYU pragma: no_forward_declare QSslError
class QUrl;
struct KeyValue {
QString key;

View File

@ -4,9 +4,10 @@
#include "chatmodel.h"
#include "modellist.h"
#include "mysettings.h"
#include "utils.h"
#include "utils.h" // IWYU pragma: keep
#include <fmt/format.h>
#include <gpt4all-backend/llmodel.h>
#include <QByteArray>
#include <QCborArray>
@ -15,32 +16,38 @@
#include <QDateTime>
#include <QDebug>
#include <QHostAddress>
#include <QHttpHeaders>
#include <QHttpServer>
#include <QHttpServerRequest>
#include <QHttpServerResponder>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QLatin1StringView>
#include <QPair>
#include <QPair> // IWYU pragma: keep
#include <QTcpServer>
#include <QVariant>
#include <Qt>
#include <QtAssert>
#include <QtCborCommon>
#include <QtGlobal>
#include <QtLogging>
#include <QtMinMax>
#include <QtPreprocessorSupport>
#include <QtTypes>
#include <cstdint>
#include <exception>
#include <iostream>
#include <optional>
#include <span>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <string_view>
#include <unordered_map>
#include <utility>
#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
# include <QTcpServer>
#endif
#include <variant>
#include <vector>
using namespace std::string_literals;
using namespace Qt::Literals::StringLiterals;
@ -451,23 +458,17 @@ static QJsonObject requestFromJson(const QByteArray &request)
void Server::start()
{
m_server = std::make_unique<QHttpServer>(this);
#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
auto *tcpServer = new QTcpServer(m_server.get());
#else
auto *tcpServer = m_server.get();
#endif
auto port = MySettings::globalInstance()->networkPort();
if (!tcpServer->listen(QHostAddress::LocalHost, port)) {
qWarning() << "Server ERROR: Failed to listen on port" << port;
return;
}
#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
if (!m_server->bind(tcpServer)) {
qWarning() << "Server ERROR: Failed to HTTP server to socket" << port;
return;
}
#endif
m_server->route("/v1/models", QHttpServerRequest::Method::Get,
[](const QHttpServerRequest &) {
@ -607,19 +608,12 @@ void Server::start()
}
);
#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
m_server->addAfterRequestHandler(this, [](const QHttpServerRequest &req, QHttpServerResponse &resp) {
Q_UNUSED(req);
auto headers = resp.headers();
headers.append("Access-Control-Allow-Origin"_L1, "*"_L1);
resp.setHeaders(std::move(headers));
});
#else
m_server->afterRequest([](QHttpServerResponse &&resp) {
resp.addHeader("Access-Control-Allow-Origin", "*");
return std::move(resp);
});
#endif
connect(this, &Server::requestResetResponseState, m_chat, &Chat::resetResponseState, Qt::BlockingQueuedConnection);
}

View File

@ -8,7 +8,7 @@
#include <QHttpServerResponse>
#include <QJsonObject>
#include <QList>
#include <QObject>
#include <QObject> // IWYU pragma: keep
#include <QString>
#include <memory>

View File

@ -1,5 +1,8 @@
#include "tool.h"
#include <QDataStream>
#include <QtTypes>
#include <string>
using json = nlohmann::ordered_json;

View File

@ -9,6 +9,8 @@
#include <QVariant>
#include <QtGlobal>
class QDataStream;
using json = nlohmann::ordered_json;

View File

@ -2,8 +2,10 @@
#include "tool.h"
#include <QChar>
#include <QSet>
#include <QtGlobal>
#include <QtAssert>
#include <QtTypes>
#include <stdexcept>

View File

@ -4,7 +4,7 @@
#include <QByteArray>
#include <QList>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
namespace ToolEnums { enum class ParseState; }

View File

@ -6,6 +6,7 @@
#include <QEvent>
#include <QGlobalStatic>
class MyToolModel: public ToolModel { };
Q_GLOBAL_STATIC(MyToolModel, toolModelInstance)
ToolModel *ToolModel::globalInstance()

View File

@ -9,7 +9,8 @@
#include <QList>
#include <QString>
#include <QVariant>
#include <QtGlobal>
#include <QtPreprocessorSupport>
class ToolModel : public QAbstractListModel
{

View File

@ -5,7 +5,7 @@
#include <QByteArray>
#include <QJsonValue>
#include <QLatin1StringView>
#include <QLatin1StringView> // IWYU pragma: keep
#include <QString>
#include <QStringView>
#include <QUtf8StringView>
@ -13,8 +13,9 @@
#include <initializer_list>
#include <string_view>
#include <utility>
#include <utility> // IWYU pragma: keep
// IWYU pragma: no_forward_declare QJsonValue
class QJsonObject;
@ -40,4 +41,4 @@ MAKE_FORMATTER(QVariant, value.toString().toUtf8());
// alternative to QJsonObject's initializer_list constructor that accepts Latin-1 strings
QJsonObject makeJsonObject(std::initializer_list<std::pair<QLatin1StringView, QJsonValue>> args);
#include "utils.inl"
#include "utils.inl" // IWYU pragma: export

View File

@ -1,5 +1,6 @@
#include <QJsonObject>
inline QJsonObject makeJsonObject(std::initializer_list<std::pair<QLatin1StringView, QJsonValue>> args)
{
QJsonObject obj;

View File

@ -7,15 +7,16 @@
#include <xlsxformat.h>
#include <xlsxworksheet.h>
#include <QChar>
#include <QDateTime>
#include <QDebug>
#include <QLatin1StringView>
#include <QList>
#include <QRegularExpression>
#include <QString>
#include <QStringList>
#include <QStringList> // IWYU pragma: keep
#include <QStringView>
#include <QVariant>
#include <QtGlobal>
#include <QtLogging>
#include <memory>

View File

@ -4,6 +4,7 @@
class QIODevice;
class QString;
class XLSXToMD
{
public: