MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / compactProjectSnapshotResult

Function compactProjectSnapshotResult

app/src/AI/ToolDispatcher.cpp:966–1014  ·  view source on GitHub ↗

* @brief Compacts a project.snapshot result into the assistant.snapshot shape. */

Source from the content-addressed store, hash-verified

964 * @brief Compacts a project.snapshot result into the assistant.snapshot shape.
965 */
966static QJsonObject compactProjectSnapshotResult(const QJsonObject& projectResult,
967 const QJsonObject& workspaceResult,
968 bool includeRaw)
969{
970 const auto snapshot = projectResult.value(QStringLiteral("snapshot")).toObject();
971
972 QJsonObject compact;
973 compact[QStringLiteral("title")] = snapshot.value(QStringLiteral("title")).toString();
974 compact[QStringLiteral("filePath")] = snapshot.value(QStringLiteral("filePath")).toString();
975 compact[QStringLiteral("operationMode")] =
976 snapshot.value(QStringLiteral("operationMode")).toInt();
977 compact[QStringLiteral("groupCount")] = snapshot.value(QStringLiteral("groupCount")).toInt();
978 compact[QStringLiteral("datasetCount")] = snapshot.value(QStringLiteral("datasetCount")).toInt();
979 compact[QStringLiteral("projectEpoch")] = projectResult.value(QStringLiteral("projectEpoch"));
980 compact[QStringLiteral("summary")] = snapshot.value(QStringLiteral("_explanations"))
981 .toObject()
982 .value(QStringLiteral("summary"))
983 .toString();
984
985 QJsonArray groups;
986 for (const auto& value : snapshot.value(QStringLiteral("groups")).toArray()) {
987 const auto group = value.toObject();
988 QJsonObject row;
989 row[QStringLiteral("groupId")] = group.value(QStringLiteral("groupId")).toInt();
990 row[QStringLiteral("title")] = group.value(QStringLiteral("title")).toString();
991 row[QStringLiteral("widget")] = group.value(QStringLiteral("widget")).toString();
992 row[QStringLiteral("datasetCount")] = group.value(QStringLiteral("datasetCount")).toInt();
993 if (group.contains(QStringLiteral("compatibleWidgetTypeSlugs")))
994 row[QStringLiteral("compatibleWidgetTypeSlugs")] =
995 group.value(QStringLiteral("compatibleWidgetTypeSlugs")).toArray();
996
997 row[QStringLiteral("datasets")] =
998 compactDatasets(group.value(QStringLiteral("datasets")).toArray());
999 groups.append(row);
1000 }
1001 compact[QStringLiteral("groups")] = groups;
1002
1003 const auto workspaceRows = workspaceResult.value(QStringLiteral("workspaces")).toArray();
1004 compact[QStringLiteral("workspaces")] = workspaceRows.isEmpty()
1005 ? snapshot.value(QStringLiteral("workspaces")).toArray()
1006 : workspaceRows;
1007 compact[QStringLiteral("dataTables")] = snapshot.value(QStringLiteral("dataTables")).toArray();
1008 compact[QStringLiteral("hint")] = projectResult.value(QStringLiteral("hint")).toString();
1009
1010 if (includeRaw)
1011 compact[QStringLiteral("rawProjectSnapshot")] = projectResult;
1012
1013 return compact;
1014}
1015
1016/**
1017 * @brief Maps a script kind + language pair to the matching scripting-docs key.

Callers 1

executeAssistantToolFunction · 0.85

Calls 5

compactDatasetsFunction · 0.85
isEmptyMethod · 0.80
valueMethod · 0.45
containsMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected