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) set(GPT4ALL_USING_QTPDF ON)
list(APPEND GPT4ALL_QT_COMPONENTS Pdf) list(APPEND GPT4ALL_QT_COMPONENTS Pdf)
endif() 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) if (QT_KNOWN_POLICY_QTP0004)
qt_policy(SET QTP0004 NEW) # generate extra qmldir files on Qt 6.8+ qt_policy(SET QTP0004 NEW) # generate extra qmldir files on Qt 6.8+

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,19 +1,21 @@
#include "database.h" #include "database.h"
#include "mysettings.h" #include "mysettings.h"
#include "utils.h" #include "utils.h" // IWYU pragma: keep
#include <duckx/duckx.hpp> #include <duckx/duckx.hpp>
#include <fmt/format.h> #include <fmt/format.h>
#include <usearch/index.hpp>
#include <usearch/index_plugins.hpp> #include <usearch/index_plugins.hpp>
#include <QByteArrayView>
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
#include <QDirIterator> #include <QDirIterator>
#include <QFile> #include <QFile>
#include <QFileSystemWatcher> #include <QFileSystemWatcher>
#include <QFlags>
#include <QIODevice> #include <QIODevice>
#include <QKeyValueIterator>
#include <QRegularExpression> #include <QRegularExpression>
#include <QSqlError> #include <QSqlError>
#include <QSqlQuery> #include <QSqlQuery>
@ -22,8 +24,9 @@
#include <QMap> #include <QMap>
#include <QUtf8StringView> #include <QUtf8StringView>
#include <QVariant> #include <QVariant>
#include <Qt>
#include <QtLogging> #include <QtLogging>
#include <QtMinMax>
#include <QtTypes>
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>
@ -46,6 +49,7 @@ namespace us = unum::usearch;
//#define DEBUG //#define DEBUG
//#define DEBUG_EXAMPLE //#define DEBUG_EXAMPLE
namespace { namespace {
/* QFile that checks input for binary data. If seen, it fails the read and returns true /* 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 #ifndef DATABASE_H
#define DATABASE_H #define DATABASE_H
#include "embllm.h" // IWYU pragma: keep #include "embllm.h"
#include <QByteArray> #include <QByteArray>
#include <QChar> #include <QChar>
@ -15,11 +15,11 @@
#include <QSet> #include <QSet>
#include <QSqlDatabase> #include <QSqlDatabase>
#include <QString> #include <QString>
#include <QStringList> #include <QStringList> // IWYU pragma: keep
#include <QThread> #include <QThread>
#include <QUrl> #include <QUrl>
#include <QVector> #include <QVector> // IWYU pragma: keep
#include <QtGlobal> #include <QtAssert>
#include <atomic> #include <atomic>
#include <cstddef> #include <cstddef>
@ -28,7 +28,7 @@
#include <memory> #include <memory>
#include <optional> #include <optional>
#include <utility> #include <utility>
#include <vector> #include <vector> // IWYU pragma: keep
using namespace Qt::Literals::StringLiterals; using namespace Qt::Literals::StringLiterals;
@ -39,6 +39,7 @@ class QSqlQuery;
class QTextStream; class QTextStream;
class QTimer; class QTimer;
/* Version 0: GPT4All v2.4.3, full-text search /* Version 0: GPT4All v2.4.3, full-text search
* Version 1: GPT4All v2.5.3, embeddings in hsnwlib * Version 1: GPT4All v2.5.3, embeddings in hsnwlib
* Version 2: GPT4All v3.0.0, embeddings in sqlite * Version 2: GPT4All v3.0.0, embeddings in sqlite

View File

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

View File

@ -13,10 +13,14 @@
#include <QSslError> #include <QSslError>
#include <QString> #include <QString>
#include <QThread> #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; class QByteArray;
struct ReleaseInfo { struct ReleaseInfo {
Q_GADGET Q_GADGET
Q_PROPERTY(QString version MEMBER version) Q_PROPERTY(QString version MEMBER version)

View File

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

View File

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

View File

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

View File

@ -5,7 +5,11 @@
#include <nlohmann/json.hpp> #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; using json = nlohmann::ordered_json;

View File

@ -2,6 +2,9 @@
#include "jinja_replacements.h" #include "jinja_replacements.h"
#include <utility>
// This is a list of prompt templates known to GPT4All and their associated replacements which are automatically used // 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: // 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; // - 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 <QSettings>
#include <QUrl> #include <QUrl>
#include <QtLogging> #include <QtLogging>
#include <QtSystemDetection>
#include <string>
#ifdef GPT4ALL_OFFLINE_INSTALLER #ifdef GPT4ALL_OFFLINE_INSTALLER
# include <QDesktopServices> # include <QDesktopServices>
@ -25,6 +28,7 @@
using namespace Qt::Literals::StringLiterals; using namespace Qt::Literals::StringLiterals;
class MyLLM: public LLM { }; class MyLLM: public LLM { };
Q_GLOBAL_STATIC(MyLLM, llmInstance) Q_GLOBAL_STATIC(MyLLM, llmInstance)
LLM *LLM::globalInstance() LLM *LLM::globalInstance()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,7 +11,14 @@
#include <QSslError> #include <QSslError>
#include <QString> #include <QString>
#include <QVariant> #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 { struct KeyValue {
QString key; QString key;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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