1717
1818namespace {
1919void ParseGguf (const DownloadItem& ggufDownloadItem,
20- std::optional<std::string> author) {
20+ std::optional<std::string> author,
21+ std::optional<std::string> name) {
2122 namespace fs = std::filesystem;
2223 namespace fmu = file_manager_utils;
2324 config::GGUFHandler gguf_handler;
@@ -32,6 +33,8 @@ void ParseGguf(const DownloadItem& ggufDownloadItem,
3233 fmu::ToRelativeCortexDataPath (fs::path (ggufDownloadItem.localPath ));
3334 model_config.files = {file_rel_path.string ()};
3435 model_config.model = ggufDownloadItem.id ;
36+ model_config.name =
37+ name.has_value () ? name.value () : gguf_handler.GetModelConfig ().name ;
3538 yaml_handler.UpdateModelConfig (model_config);
3639
3740 auto yaml_path{ggufDownloadItem.localPath };
@@ -223,7 +226,8 @@ std::optional<config::ModelConfig> ModelService::GetDownloadedModel(
223226}
224227
225228cpp::result<DownloadTask, std::string> ModelService::HandleDownloadUrlAsync (
226- const std::string& url, std::optional<std::string> temp_model_id) {
229+ const std::string& url, std::optional<std::string> temp_model_id,
230+ std::optional<std::string> temp_name) {
227231 auto url_obj = url_parser::FromUrlString (url);
228232
229233 if (url_obj.host == kHuggingFaceHost ) {
@@ -279,9 +283,9 @@ cpp::result<DownloadTask, std::string> ModelService::HandleDownloadUrlAsync(
279283 .localPath = local_path,
280284 }}}};
281285
282- auto on_finished = [author](const DownloadTask& finishedTask) {
286+ auto on_finished = [author, temp_name ](const DownloadTask& finishedTask) {
283287 auto gguf_download_item = finishedTask.items [0 ];
284- ParseGguf (gguf_download_item, author);
288+ ParseGguf (gguf_download_item, author, temp_name );
285289 };
286290
287291 downloadTask.id = unique_model_id;
@@ -346,7 +350,7 @@ cpp::result<std::string, std::string> ModelService::HandleUrl(
346350
347351 auto on_finished = [author](const DownloadTask& finishedTask) {
348352 auto gguf_download_item = finishedTask.items [0 ];
349- ParseGguf (gguf_download_item, author);
353+ ParseGguf (gguf_download_item, author, std:: nullopt );
350354 };
351355
352356 auto result = download_service_->AddDownloadTask (downloadTask, on_finished);
@@ -770,7 +774,7 @@ cpp::result<ModelPullInfo, std::string> ModelService::GetModelPullInfo(
770774 auto author{url_obj.pathParams [0 ]};
771775 auto model_id{url_obj.pathParams [1 ]};
772776 auto file_name{url_obj.pathParams .back ()};
773- if (author == " cortexso" ) {
777+ if (author == " cortexso" ) {
774778 return ModelPullInfo{.id = model_id + " :" + url_obj.pathParams [3 ],
775779 .downloaded_models = {},
776780 .available_models = {},
@@ -787,8 +791,10 @@ cpp::result<ModelPullInfo, std::string> ModelService::GetModelPullInfo(
787791 if (parsed.size () != 2 ) {
788792 return cpp::fail (" Invalid model handle: " + input);
789793 }
790- return ModelPullInfo{
791- .id = input, .downloaded_models = {}, .available_models = {}, .download_url = input};
794+ return ModelPullInfo{.id = input,
795+ .downloaded_models = {},
796+ .available_models = {},
797+ .download_url = input};
792798 }
793799
794800 if (input.find (" /" ) != std::string::npos) {
0 commit comments